在 PostgreSQL 中,NULL
不被认为等于任何东西,因此 NULL = NULL
返回 false
。我正在编写一个查询,其中一个 WHERE
条件检查两个值是否相等。如果两个值都是 NULL
,我希望它像任何其他值比较一样返回 true
。目前我这样做:
SELECT foo
FROM bar
WHERE baz = qux
OR (baz IS NULL AND qux IS NULL);
有没有更好的办法?
最佳答案
您可以使用 null 安全相等比较 IS NOT DISTINCT FROM
:
SELECT foo
FROM bar
WHERE baz IS NOT DISTINCT FROM qux;
这是一个简短的演示,显示当 IS NOT DISTINCT FROM
的两侧都是相同的非 NULL
值,或者两者都是 时返回记录空
:
Demo
关于PostgreSQL - 查找两个值的相等性,这两个值都可以是 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54405745/