2013-05-06 123 views
10

我想限制我的查询,只显示某些字段不为空的行。我发现this thread有人提出了相同的问题,并被告知使用IS NOT NULL。我尝试过,但我仍然得到行空的地方。SQL/MySQL NOT NULL与NOT EMPTY

这样做的正确方法是什么?与SQL/MySQL中的Empty是否相同?

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

+0

你能张贴一些样本数据 – 2013-05-06 07:18:38

+0

不幸的是我不能发布我的表中的实际数据,因为它包含敏感信息。如果你想测试,你可以很容易地写出2行。 – cream 2013-05-06 07:20:57

+3

看看这个问题:http://stackoverflow.com/questions/1869264/mysql-select-where-column-not-empty – joakaune 2013-05-06 07:23:55

回答

7

当比较一个NULL价值得到了它,结果在大多数情况下成为NULL和为此富人的结果是相同的0(MySQL中的FALSE值)在WHEREHAVING之内。

在你给出的例子中,你不需要包含IS NOT NULL。相反,只需使用party_zip IN ('49080', '49078', '49284')即可。 NULL不能是49080,49078,49284或任何其他数字或字符串。

你需要考虑的是检查空值。如果值为NULL,则!party_zip将不返回TRUE/1。相反使用OR columns IS NULL!COALESCE(party_zip, 0)

22

我用AND (partyfn IS NOT NULL AND partyfn != '')