SQL Server中可能为null的变量逻辑运算的时候要小心
DECLARE @a int declare @b int set @a=1 IF(@a<>@b) print('@a<>@b') else print('@a=@b') if(@b<>1) print('b<>1') else print('b=1')
如上代码 在SQL Server中的执行结果是: @a=@b b=1
解释:
@b没有赋值,默认值为NUll,NUll的意思是不知道,拿一个不知道的变量来做比较 永远会返回false。
以上的代码无论拿变量@b和@a怎么逻辑运算 都不会去执行if中的代码。
解决办法:
可以在比较的时候去判断下变量@b是否为null 或者 在给变量声明后就赋值,代码如下
DECLARE @a int declare @b int set @a=1 IF(@b is null or @a<>@b) print('@a<>@b') else print('@a=@b') if(@b is null or @b<>1) print('b<>1') else print('b=1')

浙公网安备 33010602011771号