Transact SQL中数字与字符串相加为何转为数值运算?
为什么两段Transact SQL语句执行结果都是246?
你给出的两段SQL语句如下:
select 123 + '123' select '123' + 123
这是因为SQL Server遵循数据类型优先级规则:当不同数据类型的操作数进行运算时,优先级低的数据类型会被隐式转换为优先级高的类型,再执行运算。
在SQL Server里,int这类数字类型的优先级远高于varchar/char这类字符串类型。所以不管是数字 + 字符串还是字符串 + 数字,字符串都会被自动转换成对应的数字类型,然后执行加法运算,也就是123 + 123 = 246。
需要注意的是,如果字符串无法转换成有效数字(比如'abc' + 123),就会抛出转换错误。
内容的提问来源于stack exchange,提问作者CraftyFox
相关产品推荐
相关产品推荐

