1

我有一列具有空值以及其他值,例如“停用”。我正在尝试构建一个查询,上面写着“WHERE field <> 'deactivated”,但它返回一个空的结果集。根据我的研究,这似乎是因为它无法与空值进行比较。但我一直无法弄清楚如何绕过它。谢谢

4

4 回答 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 回答