Проверка неперекрывающихся элементов postgres - PullRequest
0 голосов
/ 06 августа 2020
Документация

Postgres, кажется, только показывает, как проверить, имеют ли два массива перекрывающиеся элементы. Мне нужно знать, есть ли в двух массивах неперекрывающиеся элементы.

Итак, если у меня 2 массива:

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

Это должно вернуть false. Проверка на неравенство не работает, потому что они могут не быть равными в том смысле, что одно и то же целое число в одном массиве может повторяться несколько раз.

Возможно ли это сравнение?

1 Ответ

0 голосов
/ 06 августа 2020

Два набора не перекрываются, если нет общих элементов, поэтому использование оператора && для массивов и отрицание результата даст вам то, что вы хотите.

# 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)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...