sql >> Database >  >> RDS >> PostgreSQL

Arrays vergelijken in PostgreSQL

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!

  1. Hoe een script van SQL Server-gegevens te krijgen?

  2. De kunst van het aggregeren van gegevens in SQL van eenvoudige tot glijdende aggregaties

  3. Heroku psql:FATAL:resterende verbindingssleuven zijn gereserveerd voor niet-replicatie-superuser-verbindingen

  4. Waarschuwing:mysql_fetch_array() verwacht dat parameter 1 resource is, boolean gegeven in