Charlie

技术改变命运http://www.cnblogs.com/Charlie-Gou/ .NET高级编程群 群号 183773042 欢迎大神踊跃加入。

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

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')

 

 

 

posted on 2014-04-23 16:53  Charlie.Gou  阅读(1570)  评论(0)    收藏  举报