Postgres hat eine Array-Datentyp, in diesem Fall ein numerisches Array:Postgres - Vergleich von zwei Arrays
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}
Von dem, was ich sagen kann, können Sie nur ein Array wie folgt abfragen:
SELECT * FROM sal_emp WHERE 4=ANY(pay_by_quarter);
SELECT * FROM sal_emp WHERE ARRAY[4,5,6]=pay_by_quarter;
Dies bedeutet, dass Sie eine Zeile auswählen können, in der das Array eine Übereinstimmung für ein einzelnes Argument enthält, oder wenn das gesamte Array einem Array-Argument entspricht.
Ich muss eine Zeile auswählen, in der jedes Mitglied des Array der Zeile mit jedem Mitglied eines Argumentarrays übereinstimmt - irgendwie wie ein "IN", aber ich kann nicht herausfinden, wie. Ich habe die folgenden zwei Ansätze ausprobiert, 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 ich etwas mit der Umwandlung der Array in einen String tun könnte, aber das klingt wie eine schlechte Lösung ..
irgendwelche Ideen?