TSQL如何确定如何应用+;操作人员

TSQL如何确定如何应用+;操作人员,tsql,sql-server-2012,Tsql,Sql Server 2012,示例代码: declare @str nvarchar(100) set @str = 5 set @str = @str + 2 select @str 上述代码将@str设置为“7”。但是加号也可以用于连接字符串(例如,如果发生这种情况,str将在末尾为“52”) 我的问题是,在上述情况下,SQL Server如何确定+是字符串concat还是算术加运算 如果+的两个值的类型不同,则优先级较高的类型“获胜” 在本例中,由于int的优先级高于varchar,SQL Server将尝试将这

示例代码:

declare @str nvarchar(100)
set @str = 5
set @str =  @str + 2
select @str 
上述代码将
@str
设置为“7”。但是加号也可以用于连接字符串(例如,如果发生这种情况,
str
将在末尾为“52”)


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

如果
+
的两个值的类型不同,则优先级较高的类型“获胜”

在本例中,由于
int
的优先级高于
varchar
,SQL Server将尝试将这两个值转换为
int
,然后执行算术求和(在本例中有效,因为“字符串”也是有效的
int
值)


如果两个值都是
varchar
,则执行字符串连接。有关类型优先级的详细信息,请参阅。不要将原始数字存储到
varchar
类型中。是的,我知道。我只是好奇。如果
+
的两个值属于不同的类型,则具有较高优先级的类型“获胜”-因为
int
的优先级高于
varchar
,SQL Server会将这两个值转换为
int
,从而执行算术和。如果两个值都是
varchar
,则执行字符串连接。请参阅关于类型优先级的说明