【问题标题】:Join 2 tables with different data types连接具有不同数据类型的 2 个表
【发布时间】:2021-09-12 00:02:30
【问题描述】:

我正在尝试加入 2 个具有不同数据类型的表。数据是相同的,但表是使用不同数据类型的数据设置的,即 int 和 string。对于下面的示例,我想提取城市和人口。我没有创建表,也无权更改它们。

表 1

邮政编码:'12345'(数据类型字符串)

人口:99

表 2

邮政编码:12345(数据类型 int)

城市:丹维尔

SELECT
table1.population,
table2.city
FROM table1
JOIN table2 
on tabel1.zip as CAST(table2.zip AS VARCHAR(5))
WHERE table2.city = 'Danville'
Group by 1,2;

谢谢

【问题讨论】:

  • 应该可以将数值列转换为字符串SELECT CAST(t1.zip_code AS VARCHAR(5)),但您需要自己测试。

标签: sql database sqldatatypes


【解决方案1】:

邮政编码不应存储为数字!只需向马萨诸塞州或波多黎各的任何人询问前导零的重要性即可。我怀疑您在其他使用数字邮政编码的国家/地区也有类似的问题。

我的建议是修复数据。您没有指定您正在使用的数据库,但您应该将整数邮政编码更改为带有前导零的五位数邮政编码。

您可以通过转换在短期内解决问题。我建议转换为数字:

cast(table2.zip as int) = table1.zip

但是,如果您在 table2 中的 zip 格式不正确,则可能会出现转换错误。

【讨论】:

  • 谢谢,可惜我没有建表,也没有权限换表。
  • @NTruth 。 . .在任何情况下,您都希望转换为数字而不是字符串。否则你会丢失前导零。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-25
  • 2018-11-24
相关资源
最近更新 更多