繁体   English   中英

两个SQL DB中不同类型值的匹配

[英]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.ACTINDXvarchar(15)类型, TR00100.ACTINDXINT类型。

所以,也就是说,我的理解是这行不通,对吗? 换句话说,即使值相同,如果它们的类型不同,也永远找不到匹配项。 这是正确的,还是在这种情况下会发生某种类型的强制? 澄清一下,一个数据库是 MariaDB,另一个是 SQL Server。

SQL Server——与所有数据库一样——将进行隐式类型转换。

在这种情况下,字符串被转换为整数(或数字或某种类型)。 如果无法转换,则会出现类型转换错误。

请注意,此类类型转换通常会显着降低查询速度,因为它们通常会妨碍索引的使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM