在PostgreSQL中,NULL
不被视为等于任何东西,因此NULL = NULL
返回false
。我正在写一个查询,其中我的WHERE
条件之一检查两个值的相等性。如果两个值都是NULL
,我希望它返回true
作为其他任何值比较。目前我正在这样做:
SELECT foo
FROM bar
WHERE baz = qux
OR (baz IS NULL AND qux IS NULL);
有更好的方法吗?
答案 0 :(得分:2)
您可以使用空安全相等比较IS NOT DISTINCT FROM
:
SELECT foo
FROM bar
WHERE baz IS NOT DISTINCT FROM qux;
这是一个简短的演示,展示了当IS NOT DISTINCT FROM
的两个边都是相同的非NULL
值或都为NULL
时返回记录: