postgres a un type de données de tableau, dans ce cas, un tableau numérique:postgres - comparant deux tableaux
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}
D'après ce que je peux dire, vous ne pouvez interroger 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;
ce qui signifie que vous pouvez sélectionner une ligne avec le tableau contient une correspondance pour un seul argument, ou si le tableau entier correspond à un argument de tableau.
Je dois sélectionner une ligne où n'importe quel membre du tableau de la rangée correspond à n'importe quel membre d'un tableau d'arguments - un peu comme un 'IN' mais je ne peux pas comprendre comment. J'ai essayé les deux approches, mais ni travaux suivants:
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 conversion du tableau en une chaîne, mais qui sonne comme solution pauvre ..
des idées?