我有一个像这样的查询:
Select * FROM table1 WHERE field1 NOT IN ('value1')
如果该field1
行是null
,则不会返回.它对我来说看起来不合逻辑,因为null
它不是'value1',所以应返回该行,这可能会导致许多错误.我明白,由于某些原因,它的工作方式如此.这些是什么?
NULL
在SQL中,A 不是值.
SELECT NULL = NULL # => NULL SELECT NULL != NULL # => NULL
从而,
原因null不是'value1'
但NULL
也不是没有 "VALUE1".NULL
基本上是说"我不知道"的SQL方式.所以它可能是'value1',或者它可能不是.测试的方法NULL
是
SELECT NULL IS NULL; # => 1
因此,试试这个:
WHERE field1 NOT IN ('value1') OR field1 IS NULL
专门处理此案.