DECLARE @a intdeclare @b intset @a=1IF(@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 intdeclare @b intset @a=1IF(@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')
新闻热点
疑难解答