postgres - comparer deux tableaux

postgres a un type de données de tableau, dans ce cas, un tableau numérique:

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}

De ce que je peux dire, vous pouvez seulement faire une requête à un tableau comme suit:

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

qui signifie que vous pouvez sélectionner une ligne du tableau contient un match pour un seul argument, ou si l'ensemble de la matrice correspond à un argument de tableau.

J'ai besoin pour sélectionner une ligne, où tout membre de la ligne du tableau correspond à n'importe quel membre d'un tableau d'arguments - un peu comme un "DANS" mais je ne peux pas comprendre comment. J'ai essayé les deux solutions suivantes, mais ne travaillent pas:

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

Je suppose que je pourrais faire quelque chose avec la transformation de la matrice à une chaîne, mais qui sonne comme une mauvaise solution..

des idées?

source d'informationauteur pstanton