试图测试一个字段<> mysql中的值为null

时间:2012-12-12 20:47:23

标签: mysql sql null

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

4 个答案:

答案 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'