很多时候我必须运行这个查询:
select * from users where name is not null and name != ''
有没有更好的方法可以做到这一点。我需要更多的性能,任何建议。我想这很常见,所以可能有一些编译函数
会像select * from users where name is present()
使用 PostgreSQL 9 版本。
对于任何x
,null != x
将被null
,null
不true
。这意味着您可以简单地忽略您情况下的 NULL 并说:
select * from users where name != ''
您也可以使用 COALESCE 将 NULL 转换为空字符串,如果您更清楚的话:
select * from users where coalesce(name, '') != ''
当然,coalesce
通话不是免费的。
演示:http://sqlfiddle.com/#!2/e810c/2
您可以使用 NULLIF:
SELECT *
FROM USERS
WHERE NULLIF(NAME,'') IS NOT NULL