在WHERE子句中排除空值和空值

时间:2014-02-22 00:40:56

标签: sql postgresql null database-performance

很多时候我必须运行此查询:

select * from users where name is not null and name != ''

有没有更好的方法来做到这一点。我需要更多的表现,任何建议。我想这很常见,所以可能会有一些类似

的编译函数
select * from users where name is present()

使用PostgreSQL 9版本。

2 个答案:

答案 0 :(得分:4)

对于任何xnull != xnullnull不是true。这意味着您可以在您的情况下简单地忽略NULL并说:

select * from users where name != ''

如果您更清楚,也可以使用COALESCE将NULL转换为空字符串:

select * from users where coalesce(name, '') != ''

当然coalesce来电不是免费的。

演示:http://sqlfiddle.com/#!2/e810c/2

答案 1 :(得分:0)

您可以使用NULLIF:

SELECT  * 
FROM    USERS 
WHERE   NULLIF(NAME,'') IS NOT NULL