WHERE子句中的问题

Sco*_*ott 0 sql t-sql sql-server

所以我有一个查询.如果我注释掉检查排除的部分,它会起作用.

WHERE H.BatchId = 3  AND H.IsExcluded != 1
Run Code Online (Sandbox Code Playgroud)

IsExcluded是一个接受NULL值的位字段.

我选择的所有值都是NULL,所以应该是正确的.我究竟做错了什么?它没有按原样返回任何值,但是如果我只注释掉'AND'之后,它会起作用.

Fla*_*yqi 9

WHERE H.BatchId = 3  AND (H.IsExcluded != 1 OR H.IsExcluded IS NULL)
Run Code Online (Sandbox Code Playgroud)

  • +1 - @Scott - NULL没有值(SQL认为它可以有任何值或没有值),因此它不会正常响应运算符. (2认同)