Подтвердить что ты не робот

Postgres - сравнение двух массивов

postgres имеет тип данных массива, в этом случае числовой массив:

CREATE TABLE sal_emp (name text, pay_by_quarter integer[]);
INSERT INTO sal_emp VALUES ('one', '{1,2,3}');
INSERT INTO sal_emp VALUES ('two', '{4,5,6}');
INSERT INTO sal_emp VALUES ('three', '{2,4,6}');
SELECT * FROM sal_emp;

Result:
one, {1,2,3}
two, {4,5,6}
three, {2,4,6}

Из того, что я могу сказать, вы можете запросить массив только следующим образом:

SELECT * FROM sal_emp WHERE 4=ANY(pay_by_quarter);
SELECT * FROM sal_emp WHERE ARRAY[4,5,6]=pay_by_quarter;

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

Мне нужно выбрать строку, где любой член массива строк соответствует любому члену массива аргументов - вроде как "IN", но я не могу понять, как это сделать. Я пробовал следующие два подхода, но не работал:

SELECT * from sal_emp WHERE ARRAY[4,5,6]=ANY(pay_by_quarter);
SELECT * from sal_emp WHERE ANY(pay_by_quarter) IN (4,5,6);

Я предполагаю, что могу что-то сделать с преобразованием массива в строку, но это звучит как плохое решение.

любые идеи?

4b9b3361