示例代码:
declare @str nvarchar(100)
set @str = 5
set @str = @str + 2
select @str
以上代码将@str
设置为“7”。但加号也可用于连接字符串(例如,如果发生这种情况,那么str
最后会为'52')。
我的问题是,SQL Server如何确定+
应该是字符串concat,还是在上面的情况下算术加运算?
答案 0 :(得分:3)
如果+
的两个值属于不同类型,则优先级较高的类型为“wins”。
在您的情况下,由于int
的优先级高于varchar
,因此SQL Server会尝试将这两个值都转换为int
,然后执行算术求和(适用于您的算法) case,因为你的“string”也是一个有效的int
值。
如果两个值均为varchar
,则执行字符串连接。有关类型优先级的详细信息,请参阅official MSDN Documentation