[英]Matching on Values of Different Types in Two SQL DBs
我正在修改一些由其他人编写的旧 SQL 查询,以便它们现在在 Node 环境中运行(我对 JS 的熟悉程度比对 SQL 的熟悉程度高),并且我遇到了这个查询:
UPDATE LWA
SET
DC.ACTINDX = TR00100.ACTINDX,
DC.ACTNUMBR_1 = TR00100.ACTNUMBR_1,
DC.ACTNUMBR_2 = TR00100.ACTNUMBR_2
FROM [LWA].dcr..dcr_accounts LWA
INNER JOIN MCDB..TR00100 ON LWA.ACTINDX = TR00100.ACTINDX
WHERE ACCNUM = '32'
注意这里的这一行: LWA.ACTINDX = TR00100.ACTINDX
在查看这两个数据库时,我发现用于INNER JOIN
这两列是不同类型的。 LWA.ACTINDX
是varchar(15)
类型, TR00100.ACTINDX
是INT
类型。
所以,也就是说,我的理解是这行不通,对吗? 换句话说,即使值相同,如果它们的类型不同,也永远找不到匹配项。 这是正确的,还是在这种情况下会发生某种类型的强制? 澄清一下,一个数据库是 MariaDB,另一个是 SQL Server。
SQL Server——与所有数据库一样——将进行隐式类型转换。
在这种情况下,字符串被转换为整数(或数字或某种类型)。 如果无法转换,则会出现类型转换错误。
请注意,此类类型转换通常会显着降低查询速度,因为它们通常会妨碍索引的使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.