首页 > 数据库 > SQL Server > 正文

SQL Server中可能为null的变量逻辑运算的时候要小心

2024-08-31 00:55:50
字体:
来源:转载
供稿:网友
SQL Server中可能为null的变量逻辑运算的时候要小心

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


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表