PostgreSQL проверяет, содержит ли массив любой элемент из левого массива - программирование
Подтвердить что ты не робот

PostgreSQL проверяет, содержит ли массив любой элемент из левого массива

Я знаю, что в PostgreSQL вы можете запускать запрос вроде:

SELECT (1 = ANY('{1,3,4,7}'::int[])) AS result, чтобы проверить, содержит ли правый массив элемент 1. Мне было интересно, есть ли простой способ проверить, содержит ли правый массив какой-либо элемент из левого массива. Что-то вроде:

SELECT ('{2,3}'::int[] = ANY('{1,3,4,7}'::int[])) AS result

Есть ли простой способ сделать это без итерации по левому циклу?

4b9b3361

Ответ 2

Предполагая, что ваши входы являются массивами, но их можно развернуть с помощью 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;