SQL Server类型转换行为

SQL Server在使用运算符时的行为如何?它用于对整数求和并连接字符串

为什么

select '1' + 2 + '33';  

返回36的结果,而这

select '1' + '33' + 2;

结果135?

最佳答案 SQL Server将根据需要执行自动隐式转换.由于int具有比varchar更高的数据类型优先级,当SQL Server似乎应用于字符串和int时,它将首先将字符串转换为int,然后应用运算符.

在你的第一个选择中,它似乎是’1’作为字符串,2作为一个int,因此,它将’1’转换为int并将两者相加,得到值3.对此,’33’ – 再次转换为int – 被添加,最终结果为36.

在第二种情况下,第一种情况应用于两个字符串,从而导致字符串连接,结果为“133”.添加int为2会导致此字符串变为int,因此最终结果为135.

请参阅Data Type Precedence上的宝贵MSDN文档,以了解类型优先级的所有详细信息.

点赞