代码之家  ›  专栏  ›  技术社区  ›  Scott

WHERE子句中的问题

  •  0
  • Scott  · 技术社区  · 14 年前

    所以我有个问题。如果我注释掉检查排除项的部分,它就会工作。

    WHERE H.BatchId = 3  AND H.IsExcluded != 1
    

    IsExcluded是接受空值的位字段。

    我从中选择的所有值都是NULL,因此应该是正确的。我做错什么了?它没有按原样返回任何值,但是如果我只注释“AND”和“after”,它就起作用了。

    2 回复  |  直到 14 年前
        1
  •  9
  •   Flakron Bytyqi    14 年前
    WHERE H.BatchId = 3  AND (H.IsExcluded != 1 OR H.IsExcluded IS NULL)
    
        2
  •  0
  •   Matthias Dieter Wallnöfer Ash    9 年前

    在SQL中为空!=正如@scott所说,可以使用SET ANSI\u NULLS OFF。

    Declare @a INT = NULL
    Declare @b INT = NULL
    SET ANSI_NULLS OFF
    IF(@b = @a)
        PRINT 'NULL is equal to NULL'
    ELSE
        PRINT 'NULL is not equal to  NULL'
    
    SET ANSI_NULLS ON
    IF(@b = @a)
        PRINT 'NULL is equal to NULL'
    ELSE
        PRINT 'NULL is not equal to  NULL'
    

    输出为:

    • NULL等于NULL:ANSI\u NULLS设置为OFF