PostgreSQL macht es sehr einfach, Arrays von Werten mit einfachen Operatoren zu vergleichen. In diesem Artikel werden wir uns ansehen, wie man Arrays in einer PostgreSQL-Datenbank vergleicht.
So vergleichen Sie Arrays in PostgreSQL
PostgreSQL ermöglicht den Vergleich von Arrays mit Gleichheitsoperatoren (=, <>), Ordnungsoperatoren (>, <,>=, <=), Containment-Operatoren (@>, <@) und Überlappungsoperatoren (&&).
Nachdem PostgreSQL Arrays vergleicht, gibt es t für wahr oder f für falsch als Ergebnis zurück.
Sehen wir uns jeden dieser Operatoren einzeln an.
Arrays auf Gleichheit vergleichen
Gleichheitsoperatoren führen einen Element-für-Element-Vergleich durch, um zu prüfen, ob die beiden Arrays gleich sind oder nicht.
Hier sind Beispiel-SQL-Abfragen zum Vergleichen zweier Arrays mit Gleichheitsoperatoren. Die folgenden zwei Arrays sind nicht gleich.
postgres=# select array[2,3,4] = array[1,2,5] as compare;
compare
---------
f
postgres=# select array[2,3,4] <> array[1,2,5]
as compare;
compare
---------
t
Vergleichen Sie Arrays für die Reihenfolge
Ordnungsoperatoren (>, <,>=, <=) führen einen Element-für-Element-Vergleich zwischen zwei Arrays durch, um zu prüfen, ob jedes Elementpaar der erforderlichen Ordnungsbedingung entspricht. Wenn es keine Nichtübereinstimmung gibt, wird t zurückgegeben, andernfalls f.
Hier ist ein Beispiel
postgres=# select array[1,3,5] >= array[1,3,4] as compare1, array[1,3,5] <= array[1,3,4,5] as compare2; compare1 | compare2 ----------+---------- t | f
Beim ersten Vergleich ist jedes Element des ersten Arrays>=jedes Element des zweiten Arrays. Daher werden Sie wahr. Beim zweiten Vergleich hat das erste Array kein viertes Element, das für den Vergleich mit dem vierten Element des zweiten Arrays erforderlich ist. Daher schlägt der Vergleich fehl und Sie erhalten als Ergebnis false.
Vergleichen Sie Arrays für Containment
Containment-Operatoren (<@, @>) ermöglichen Ihnen mit dem @>-Operator zu prüfen, ob ein Array ein anderes Array enthält, oder ob ein Array mit dem <@-Operator.
in einem anderen Array enthalten ist#to check if elements of array['b', 'c', 'd'] contain elements of array['b', 'c'] postgres=# select array['b', 'c', 'd'] @> array['b', 'c'] as contains; contains ---------- t # to check if array[1, 2, 4] is contained by array[4, 5, 2, 1] postgres=#select array[1, 2, 4] <@ array[4, 5, 2, 1] as is_contained_by; is_contained_by ----------------- t
Arrays auf Überlappung vergleichen
Mit dem Überlappungsoperator (&&) können Sie prüfen, ob es gemeinsame Elemente in zwei Arrays gibt.
postgres=# select postgres-# array[2, 4] && array[4, 3] as overlap1, postgres-# array[0, 2] && array[1, 4] as overlap2; overlap1 | overlap2 ----------+---------- t | f
Benötigen Sie ein Reporting-Tool für PostgreSQL? Ubiq macht es einfach, Daten innerhalb von Minuten zu visualisieren und in Echtzeit-Dashboards zu überwachen. Probieren Sie es noch heute aus!