检查非重叠元素postgres


Postgres文档似乎只展示了如何检查两个数组是否有重叠的元素。我需要知道这两个数组是否有不重叠的元素。

所以如果我有两个阵列:

array_1 = '{1, 2, 3, 4}'
array_2 = '{0, 3, 4, 5}'

这应该返回false。检查不相等是无效的,因为它们可能不相等,因为一个数组可能会多次重复相同的整数。

这种比较可能吗?

如果没有共同的元素,那么两个集合是不重叠的,因此对数组使用&&运算符并否定结果可以得到所需的结果。

# select NOT (ARRAY[1,2,3,4] && ARRAY[0,3,3,3,3,4,5]) AS non_overlapping;
non_overlapping 
-----------------
f
(1 row)
# select NOT (ARRAY[1,2,8,9] && ARRAY[0,3,3,3,3,4,5]) AS non_overlapping;
non_overlapping 
-----------------
t
(1 row)

最新更新