SQL Server + 操作符 容易忽略的陷阱

在SQL Server中,常用 + 用于字符串的联结,最近在同事编写一个SQL脚本时,使用到 + 作为字符串的拼接,却发生以下错误:从数据类型 varchar 转换为 bigint 时出错。

脚本如下:

Declare @Org bigint;
declare @Sql nvarchar(1000);

set @Org=1001507247175004

set @Sql='select top 1 * from MRP_PlanName where Org=' + @Org

exec(@Sql)

单独执行脚本:

select top 1 * from MRP_PlanName where Org=1001507247175004

查询结果正常。

后续简单检查之后,才反应过来,+ 操作符的使用中,并不是按照关心思维中的,直接将变量 @org 的值转换为字符串,然后拼接的

SQL Server中 操作符 + 的使用:

1、算术运算符 两个数值类型的加法原酸数学计算 

2、连接运算符 字符串串联运算符,可以将两个或两个以上字符串合并成一个字符串

3、当(+)作为连接运算符时,多用于将两个字符串连接合并为一个字符串,需注意以下:

3.1 当有一个操作数是数值型时,会尝试将其他操作数转换为数值型,如果转换成功,则进行加和运算;如果转换失败,则数据库抛错

    

 

3.2 当有一个操作数是NULL时,结果返回NULL

 

 

posted @ 2020-11-19 16:44  伊索寓言  阅读(137)  评论(0编辑  收藏  举报