PostgreSQL-查找两个值相等,两个值都可以为NULL

时间:2019-01-28 15:55:40

标签: postgresql

在PostgreSQL中,NULL不被视为等于任何东西,因此NULL = NULL返回false。我正在写一个查询,其中我的WHERE条件之一检查两个值的相等性。如果两个值都是NULL,我希望它返回true作为其他任何值比较。目前我正在这样做:

SELECT foo
FROM bar
WHERE baz = qux
   OR (baz IS NULL AND qux IS NULL);

有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

您可以使用空安全相等比较IS NOT DISTINCT FROM

SELECT foo
FROM bar
WHERE baz IS NOT DISTINCT FROM qux;

这是一个简短的演示,展示了当IS NOT DISTINCT FROM的两个边都是相同的非NULL值或都为NULL时返回记录:

Demo