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文档,以了解类型优先级的所有详细信息.