16

我想限制我的查询只显示某个字段不为空的行。我发现这个帖子有人提出了同样的问题并被告知使用IS NOT NULL. 我试过了,但我仍然得到字段为空的行。

这样做的正确方法是什么?Null 与 SQL/MySQL 中的 Empty 一样吗?

如果您有兴趣,我的查询是: SELECT * FROM records WHERE (party_zip='49080' OR party_zip='49078' OR party_zip='49284' ) AND partyfn IS NOT NULL

4

2 回答 2

38

我通过使用得到它AND (partyfn IS NOT NULL AND partyfn != '')

于 2013-05-06T07:25:45.883 回答
9

比较一个NULL值时,大多数情况下的结果会变成,因此在and中与(MySQL 中的 FALSE 值)NULL具有相同的结果。0WHEREHAVING

在您给定的示例中,您不需要包含IS NOT NULL. 相反,只需使用party_zip IN ('49080', '49078', '49284'). NULL不能是 49080、49078、49284 或任何其他数字或字符串。

但是,您需要考虑的是在检查空值时。!party_zip不会返回TRUE/1如果值为NULL. 而是使用OR columns IS NULL!COALESCE(party_zip, 0)

于 2013-05-06T07:46:54.317 回答