sql - 连接具有不同数据类型的 2 个表
问题描述
我正在尝试加入 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;
谢谢
解决方案
邮政编码不应存储为数字!只需向马萨诸塞州或波多黎各的任何人询问前导零的重要性即可。我怀疑您在其他使用数字邮政编码的国家/地区也有类似的问题。
我的建议是你修复数据。您没有指定您正在使用的数据库,但您应该将整数邮政编码更改为带有前导零的五位数邮政编码。
您可以通过转换在短期内解决问题。我建议转换为数字:
cast(table2.zip as int) = table1.zip
但是,如果您在table2
.
推荐阅读
- firebase - Flutter + Cloud firestore + Closures:为什么我可以将文档打印到控制台,但不能添加到列表中?
- mysql - MySql 查询的执行时间超过 60 秒。如何提高性能
- java - 添加firebase数据库后,我的应用程序不断崩溃我在android studios中的应用程序不断出现编译错误
- powershell - 添加复杂的shell参数
- sql - 如何在连接多个表的查询中避免 DISTINCT?
- azure - 是什么导致 azure 托管的 hangfire 作业表现得像这样?
- netlogo - 在将项目添加到列表之前更新使用孵化定义的项目的值
- python - 如何在 jinja 中同时循环遍历 2 个元素?
- javascript - 为什么这个 React 方法没有按预期工作?
- svg - 如何选择某个类的随机元素 | 绿袜 - GSAP