mssql sqlserver null值你知多少?


摘要:
下文全面分析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