TSQL如何确定如何应用+运算符?

时间:2017-06-27 04:55:57

标签: tsql sql-server-2012

示例代码:

declare @str nvarchar(100)
set @str = 5
set @str =  @str + 2
select @str 

以上代码将@str设置为“7”。但加号也可用于连接字符串(例如,如果发生这种情况,那么str最后会为'52')。

我的问题是,SQL Server如何确定+应该是字符串concat,还是在上面的情况下算术加运算?

1 个答案:

答案 0 :(得分:3)

如果+的两个值属于不同类型,则优先级较高的类型为“wins”。

在您的情况下,由于int的优先级高于varchar,因此SQL Server会尝试将这两个值都转换为int,然后执行算术求和(适用于您的算法) case,因为你的“string”也是一个有效的int值。

如果两个值均为varchar,则执行字符串连接。有关类型优先级的详细信息,请参阅official MSDN Documentation