Ответ 1
Конечно, используйте оператор &&
-перекрытия массива:
SELECT ARRAY[1,2] && ARRAY[1,3,4,7];
Смотрите функции и операторы массива.
Я знаю, что в PostgreSQL вы можете запускать запрос вроде:
SELECT (1 = ANY('{1,3,4,7}'::int[])) AS result
, чтобы проверить, содержит ли правый массив элемент 1
. Мне было интересно, есть ли простой способ проверить, содержит ли правый массив какой-либо элемент из левого массива. Что-то вроде:
SELECT ('{2,3}'::int[] = ANY('{1,3,4,7}'::int[])) AS result
Есть ли простой способ сделать это без итерации по левому циклу?
Конечно, используйте оператор &&
-перекрытия массива:
SELECT ARRAY[1,2] && ARRAY[1,3,4,7];
Смотрите функции и операторы массива.
Предполагая, что ваши входы являются массивами, но их можно развернуть с помощью unnest()
, вот решение:
SELECT count(*)>0
FROM
(SELECT unnest('{2,3}'::int[]) a1) t1
join (SELECT unnest('{1,3,4,7}'::int[]) a2) t2
on t1.a1=t2.a2;