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

PostgreSQL-查找两个值的相等值,这两个值都可以为NULL,postgresql,Postgresql,在PostgreSQL中,NULL被认为不等于任何值,因此NULL=NULL返回false。我正在编写一个查询,其中一个WHERE条件检查两个值是否相等。如果两个值都NULL我希望它返回true作为任何其他值比较。目前我有: SELECT foo FROM bar WHERE baz = qux OR (baz IS NULL AND qux IS NULL); 有更好的方法吗?您可以使用空安全相等比较与没有区别: SELECT foo FROM bar WHERE baz IS NOT

在PostgreSQL中,
NULL
被认为不等于任何值,因此
NULL=NULL
返回
false
。我正在编写一个查询,其中一个
WHERE
条件检查两个值是否相等。如果两个值都
NULL
我希望它返回
true
作为任何其他值比较。目前我有:

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

有更好的方法吗?

您可以使用空安全相等比较
没有区别:

SELECT foo
FROM bar
WHERE baz IS NOT DISTINCT FROM qux;
下面是一个简短的演示,演示了当
的两侧与
都是相同的非
NULL
值,或者两者都是
NULL
时,将返回记录:


谢谢你的帮助!供其他人参考,可在文档中找到