declare @alive bit;
set @alive = null;if @alive = 1 or @alive != 1
print 'Alive or Dead';
else
print 'Huh? Neither alive nor dead';

if @alive=@alive
PRINT 'It must equal itself, right?'
ELSE
PRINT 'Not always. null does not equal null';

Huh? Neither alive nor dead
Not always. null does not equal null代码挺有意思的。

解决方案 »

  1.   

    yes, null does not equal null!
      

  2.   

    declare @alive bit;
    set @alive = null;if @alive = 1 or @alive != 1
        print 'Alive or Dead';
    else
        print 'Huh? Neither alive nor dead';
        
    if null is null
        PRINT 'It must equal itself, right?'
    ELSE
        PRINT 'Not always. null does not equal null';
    /*
    Huh? Neither alive nor dead
    It must equal itself, right?
        
        
      

  3.   

    null does not equal null
      

  4.   

    What would be the output ?declare @a smallint 
    set @a = 0 
    select nullif ( @a , '' )这个更有意思
      

  5.   

    null does not equal null!
    null is null!
      

  6.   

    俺只会中文
    NULL确实不能比较只能IS
      

  7.   

    都是些外国人。呵呵  null是什么都没有的意思。所以由此所得 null就不是数字
      

  8.   

    set ansi_nulls off后结果就不同了.set ansi_nulls off
    declare @alive bit;
    set @alive = null;if @alive = 1 or @alive != 1
        print 'Alive or Dead';
    else
        print 'Huh? Neither alive nor dead';
        
    if @alive=@alive
        PRINT 'It must equal itself, right?'
    ELSE
        PRINT 'Not always. null does not equal null';--> 结果
    Alive or Dead
    It must equal itself, right?
      

  9.   

    null确实不能比较 但是可以通过 isnull转化在比较  isnull(字段,'')  如果是NULL则转化为 ‘’ 空字符串
      

  10.   

    null不等于任何值,包括本身。
    摘自t-sql技术内幕
      

  11.   

    null just looks like '',but not equal '',understand?
      

  12.   

    Null是什么都没有的意思,所以不是''.
      

  13.   

    NULL是指不存在或者未指定的词。
    这个代码把他的意思表现的很好,我认为的。
      

  14.   

    declare @alive bit;
    set @alive = null;if @alive = 1 or @alive != 1
        print 'Alive or Dead';
    else
        print 'Huh? Neither alive nor dead';
        
    if @alive=@alive
        PRINT 'It must equal itself, right?'
    ELSE
        PRINT 'Not always. null does not equal null';
        
      

  15.   

    让我想起了 更新数据 没有加isnull 比较 引发的血案  
      

  16.   

    各个语言的NULL实现不一样,在LINUX C下面编个小程序试试。
      

  17.   


    是的,各语言不同。我今天给一个人说,他用JAVA试就都进的true。
      

  18.   


    SET ANSI_NULLS OFFdeclare @alive bit;
    set @alive = null;if @alive = 1 or @alive != 1
        print 'Alive or Dead';
    else
        print 'Huh? Neither alive nor dead';
        
    if @alive=@alive
        PRINT 'It must equal itself, right?'
    ELSE
        PRINT 'Not always. null does not equal null';
    SET ANSI_NULLS OFF/*
    Alive or Dead
    It must equal itself, right?
    */
    这样呢? 因为当 SET ANSI_NULLS 为 ON 时,如果比较中有一个或多个表达式为 NULL,则既不输出 TRUE 也不输出 FALSE,而是输出 UNKNOWN。这是因为未知值不能与其他任何值进行逻辑比较。这种情况发生在一个表达式与 NULL 单词进行比较,或者两个表达式相比,而其中一个表达式取值为 NULL 时。
    当 ANSI_NULLS 为 OFF 时,如果 ColumnA 包含空值,则比较操作 ColumnA = NULL 返回 TRUE;如果 ColumnA 除包含 NULL 外还包含某些值,则比较操作返回 FALSE。此外,两个都取空值的表达式的比较也输出 TRUE。
      

  19.   

    结尾的时候写错了 SET ANSI_NULLS ON
      

  20.   

    NUll不等于任何值,包括本身!!!
      

  21.   

    /*------------------------
    declare @alive bit;
    set @alive = null;if @alive = 1 or @alive != 1
        print 'Alive or Dead';
    else
        print 'Huh? Neither alive nor dead';
        
    if null is null
        PRINT 'It must equal itself, right?'
    ELSE
        PRINT 'Not always. null does not equal null';
    ------------------------*/
    Huh? Neither alive nor dead
    It must equal itself, right?
      

  22.   


    if @alive = 1 or @alive != 1//当变量为NUll时任何对他的加减比较结果都是NULL,但是alive!=1不成立???怪怪的?
    if @alive=@alive//然道NUll没法和自身比较?
      

  23.   

    null不能比较,只能判断 is null or not is null