select  case null
when '' then '1' 
when null then '2' --为什么没有在这个位置判断出来
else '3' 
end a select 1 a,2 b into #a
select isnull(b,0) b from #a where a=2
--b列没有数据 应该用什么来判断b是空的呢

解决方案 »

  1.   

    1.因为NULL <> NULL,所以第一个不会为2DECLARE @a INT
    DECLARE @b INTSET @a = NULL
    SET @b = NULLIF @a = @b
        PRINT 'NULL = NULL'
    ELSE
        PRINT 'NULL <> NULL'
      

  2.   

    --b列没有数据 应该用什么来判断b是空的呢
    where b is null
      

  3.   

    NULL 与 NULL 比默认是UNKWONE的,
      

  4.   

    第二个不是很明白.
    "没有值"和"有值但是值为NULL"是2个概念,可以价格判断,如果返回0行记录,则设置b为0DECLARE @b INT
    SELECT @b = ISNULL(b,0) FROM #a WHERE a=2
    IF @@ROWCOUNT = 0
        SELECT @b = 0
    SELECT @b AS b
      

  5.   

    1、
     null is null   nul <> null
    2、空集合没有属性
      

  6.   

    isnull(b,0)的意思就是b没有数据的时候返会0嘛
      

  7.   

    支持,
    补充:
    另外null与任何非null比
    默认是UNKWONE的