摘要:
下文全面分析sqlserver中的null值,如下所示:
实验环境:sql server 2008 R2
sqlserver中的NULL值,在sqlserver中代表空值,当我们对NULL值进行逻辑比较时,会出现”UNKNOWN”这个值。(sql逻辑运算一共有TRUE FALSE UNKNOWN三个返回值)。
sql逻辑判断中,对NULL的处理会返回UNKNOWN,这个逻辑结果及不会被if 处理也不会被else处理。
例:
select * from [maomao365.com] where [age] > 8 /* 当age值存在值,并且大于8时,则返回true,并返回相应行记录 */ select * from [maomao365.com] where [age] <= 8 /* 当age值存在值,并且小于等于8时,则返回true,并返回相应行记录 */ ------------------------------------------------------------------------------------ ---此处应注意,当age为null时,以上两个语句的查询条件都无法返回 ---因为age值为null时,同8进行对比返回的值为UNKNOWN,永远都无法返回true ------------------------------------------------------------------------------------ ---例2: declare @maomao varchar(20) if @maomao ='blog' begin print '此处会剔除逻辑运算为false和UNKNOWN的数值' end else begin print '此处会剔除逻辑运算为true和UNKNOWN的数值' end go
NULL值的正确处理方法:应使用 is null 或 is not null
if @maomao is null begin print '值为NULL' end go select * from [maomao365.com] where [age] is null