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
,则执行字符串连接。请参阅关于类型优先级的说明