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
Vous devez vous connecter pour publier un commentaire.
compris ... il y a un && opérateur
http://www.postgresql.org/docs/8.2/static/functions-array.html
"&& chevauchement (avoir des éléments en commun) TABLEAU[1,4,3] && TABLEAU[2,1]"