我有一个具有空值的列以及其他值,例如'deactivated'。我正在尝试构建一个查询“WHERE字段<>'停用”但它返回一个空结果集。从我的研究来看,似乎是因为它无法与空值进行比较。但我一直无法弄清楚如何绕过它。 感谢
答案 0 :(得分:3)
由于您似乎希望结果集中包含空值,因此正确的条件是
WHERE field <> 'deactivated' OR field IS NULL
答案 1 :(得分:1)
尝试专门寻找NULL
:
WHERE field <> 'deactivated' OR field IS NULL
仅供参考,您必须使用IS NOT
而不是比较运算符,因为NULL
不等于任何东西。甚至是另一个NULL
;
答案 2 :(得分:1)
由于您使用的是MySQL,因此可以使用"equal to"运算符:
WHERE NOT(field <=> 'deactivated')
在其他更多符合SQL标准的数据库中,您需要编写
WHERE field IS DISTINCT FROM 'deactivated'
我最近在the DISTINCT predicate
上撰写了一篇博文,以及各种数据库如何支持它。
答案 3 :(得分:1)
您可以使用MySQL的"null-safe equal" operator <=>:
WHERE NOT field <=> 'deactivated'