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

王朝学院·作者佚名  2016-05-26
窄屏简体版  字體: 小  |  中  |  大  |  超大  

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

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航