有什么方法可以比较两种不同类型的数据吗?
例如,我尝试使用两个不同的列LEFT JOIN
两个表 A 和 B。表 A 的键是 ProductNumber,它已输入到数据库中(我无法edit) 为文本,B 表的键为 StoreProductNumber,为数字数据。
如果我使用
a LEFT JOIN b ON a.ProductNumber LIKE b.StoreProductNumber
这允许我使用两者来加入吗?
以前,当我在 Access 和 SSMS 中尝试时,我收到一条错误,指出这两列如何由不同类型的数据组成。
最佳答案
如果 ProductNumber 可以包含比 StoreProductNumber 更多的内容:
LEFT JOIN b
ON a.ProductNumber LIKE '%' + CAST(b.StoreProductNumber as varchar(n)) + '%'
显然,您可以修改 n
以确保您的 StoreProductNumber 不会被截断。
但是,如果保证它们相同(只是数据类型不同),您可以直接比较它们:
LEFT JOIN b
on CAST(a.ProductNumber as BIGINT) = b.StoreProductNumber
如果您不需要 BIGINT
,您可以使用 INT
或您需要的任何数据类型。
最后,正如 HLGEM 指出的那样,SQL 将为您执行隐式转换,因此从技术上讲,这也是可行的:
LEFT JOIN b
on a.ProductNumber = b.StoreProductNumber
但是,为了清楚起见,我更喜欢显式地进行所有转换,因此我建议不要采用这种方法。
关于sql - 连接不同的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45192467/