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)