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

Schreibe einen Kommentar