PostgreSQL maakt het heel eenvoudig om arrays van waarden te vergelijken met behulp van eenvoudige operators. In dit artikel zullen we bekijken hoe u arrays in de PostgreSQL-database kunt vergelijken.
Hoe arrays vergelijken in PostgreSQL
Met PostgreSQL kunt u arrays vergelijken met behulp van gelijkheidsoperatoren (=, <>), orderoperatoren (>, <,>=, <=), insluitingsoperatoren (@>, <@) en overlappende operatoren (&&).
Nadat PostgreSQL arrays heeft vergeleken, retourneert het t voor true of f voor false als resultaat.
Laten we elk van deze operators een voor een bekijken.
Vergelijk arrays voor gelijkheid
Gelijkheidsoperatoren doen een element-voor-element vergelijking om te controleren of de twee arrays gelijk zijn of niet.
Hier zijn voorbeelden van SQL-query's om twee arrays te vergelijken met behulp van gelijkheidsoperatoren. De volgende twee arrays zijn niet gelijk.
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
Arrays vergelijken voor bestelling
Orderoperators (>, <,>=, <=) doen een element-voor-element vergelijking tussen twee arrays om te controleren of elk paar elementen aan de vereiste volgordevoorwaarde voldoet. Als er geen mismatch is, wordt t geretourneerd, anders f.
Hier is een voorbeeld
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
In de eerste vergelijking is elk element van de eerste array>=elk element van de tweede array. Daarom word je waar. In tweede vergelijking heeft de eerste array geen 4e element, vereist voor vergelijking met 4e element van de tweede array. Daarom mislukt de vergelijking en krijg je onwaar als resultaat.
Arrays vergelijken voor insluiting
Insluitingsoperators (<@, @>) stellen u in staat om te controleren of een array een andere array bevat met de @>-operator, of dat een array wordt opgenomen door een andere array met behulp van de <@-operator.
#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 vergelijken voor overlap
Met de overlapoperator (&&) kunt u controleren of er gemeenschappelijke elementen in twee arrays zijn.
postgres=# select postgres-# array[2, 4] && array[4, 3] as overlap1, postgres-# array[0, 2] && array[1, 4] as overlap2; overlap1 | overlap2 ----------+---------- t | f
Een rapportagetool voor PostgreSQL nodig? Ubiq maakt het gemakkelijk om gegevens binnen enkele minuten te visualiseren en in realtime dashboards te monitoren. Probeer het vandaag nog!