我有一列具有空值以及其他值,例如“停用”。我正在尝试构建一个查询,上面写着“WHERE field <> 'deactivated”,但它返回一个空的结果集。根据我的研究,这似乎是因为它无法与空值进行比较。但我一直无法弄清楚如何绕过它。谢谢
问问题
65 次
4 回答
4
由于您似乎希望结果集中包含空值,因此正确的条件是
WHERE field <> 'deactivated' OR field IS NULL
于 2012-12-12T20:52:12.060 回答
1
尝试具体寻找NULL
:
WHERE field <> 'deactivated' OR field IS NULL
仅供参考,您必须使用IS NOT
而不是比较运算符,因为NULL
它不等于任何东西。甚至另一个NULL
;
于 2012-12-12T20:48:09.147 回答
1
由于您使用的是 MySQL,因此可以使用“等于”运算符:
WHERE NOT(field <=> 'deactivated')
在其他更符合 SQL 标准的数据库中,您可以编写
WHERE field IS DISTINCT FROM 'deactivated'
我最近写了一篇关于各种数据库以及如何支持它的博客文章。DISTINCT predicate
于 2012-12-12T20:55:54.323 回答
1
您可以使用 MySQL 的“null-safe equal”运算符 <=>:
WHERE NOT field <=> 'deactivated'
于 2012-12-12T20:56:31.093 回答