如果其他条件相同,则处于相同位置(S)的数组containing和null
比较相等.进行比较时,只有实际的null
值(包括数组值as a whole)才返回null
:
SELECT null::int[] = null::int[]; --> null
对于row comparison,Postgres遵循SQL标准.The manual on Row and Array Comparisons:个
涉及数组子表达式的形式是PostgreSQL扩展;其余的是与SQL兼容的.
The manual on Row Constructor Comparison:
=
个和<>
个 case 的工作原理与其他 case 略有不同.二
如果行的所有对应成员都是
非空且等于;如果有任何对应的成员,则行是不相等的
是非空的且不相等的;otherwise the result of the row comparison
is unknown (null).
Bold重点是我的.因此,行比较与数组比较略有不同.如果行值中嵌套的null
个值比较相等(如数组中),则使用IS NOT DISTINCT FROM
而不是=
:
SELECT (1,null) IS NOT DISTINCT FROM (1,null); --> true