postgres - Vergleich von zwei arrays
postgres hat ein array-Datentyp, in diesem Fall ein nummerisches array:
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}
Was ich sagen kann, Sie können nur Abfrage ein array wie folgt:
SELECT * FROM sal_emp WHERE 4=ANY(pay_by_quarter);
SELECT * FROM sal_emp WHERE ARRAY[4,5,6]=pay_by_quarter;
was bedeutet, dass Sie können wählen Sie eine Zeile mit dem array enthält ein Spiel für ein einzelnes argument, oder wenn das ganze array mit einem array-argument.
Ich brauche um eine Zeile zu wählen, wo jedes Mitglied der Zeile das array mit jedem Element eines Arrays - eine Art, wie ein 'IN', aber ich kann nicht herausfinden, wie. Ich habe versucht, die folgenden zwei Ansätze aber weder Arbeit:
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);
Ich nehme an, ich könnte etwas tun, mit der Umwandlung des Arrays zu einem string, aber das klingt wie schlechte Lösung..
irgendwelche Ideen?
InformationsquelleAutor pstanton | 2009-10-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
dachte, es ... es ist ein && operator
http://www.postgresql.org/docs/8.2/static/functions-array.html
"&& überlappen (haben gemeinsame Elemente) ARRAY[1,4,3] && ARRAY[2,1]"
InformationsquelleAutor pstanton