sql >> Database teknologi >  >> RDS >> PostgreSQL

Sådan sammenlignes arrays i PostgreSQL

PostgreSQL gør det meget nemt at sammenligne arrays af værdier ved hjælp af simple operatorer. I denne artikel vil vi se på, hvordan man sammenligner arrays i PostgreSQL-databasen.


Sådan sammenlignes arrays i PostgreSQL

PostgreSQL giver dig mulighed for at sammenligne arrays ved hjælp af lighedsoperatorer (=, <>), bestillingsoperatorer (>, <,>=, <=), indeslutningsoperatorer (@>, <@) og overlapningsoperatorer (&&).

Efter at PostgreSQL har sammenlignet arrays, returnerer den t for sand eller f for falsk som resultat.

Lad os se på hver af disse operatorer én efter én.


Sammenlign arrays for lighed

Ligestillingsoperatorer foretager en element-for-element-sammenligning for at kontrollere, om de to arrays er ens eller ej.

Her er eksempler på SQL-forespørgsler til at sammenligne to arrays ved hjælp af lighedsoperatorer. De følgende to arrays er ikke ens.

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


Sammenlign arrays for ordre

Ordreoperatorer (>, <,>=, <=) foretager en element-for-element-sammenligning mellem to arrays for at kontrollere, om hvert par af elementer følger den påkrævede rækkefølge. Hvis der ikke er uoverensstemmelse, returnerer det t, ellers f.

Her er et eksempel

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

I den første sammenligning er hvert element i det første array>=hvert element i det andet array. Derfor får du sandhed. I anden sammenligning har det første array ikke det 4. element, hvilket kræves til sammenligning med det 4. element i det andet array. Derfor mislykkes sammenligning, og du bliver falsk som et resultat.


Sammenlign arrays for indeslutning

Indeslutningsoperatorer (<@, @>) giver dig mulighed for at kontrollere, om et array indeholder et andet array ved hjælp af @>-operatoren, eller om et array er indeholdt af et andet array ved hjælp af <@-operatoren.

#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


Sammenlign arrays for overlap

Overlap operator (&&) lader dig kontrollere, om der er nogen fælles elementer i to arrays.

postgres=# select
postgres-# array[2, 4] && array[4, 3] as overlap1,
postgres-# array[0, 2] && array[1, 4] as overlap2;
 overlap1 | overlap2
----------+----------
 t        | f

Har du brug for et rapporteringsværktøj til PostgreSQL? Ubiq gør det nemt at visualisere data på få minutter og overvåge i dashboards i realtid. Prøv det i dag!

  1. Opret et indeks på en enorm MySQL-produktionstabel uden tabellåsning

  2. ListView Kontrol Træk slip hændelser Håndtering

  3. Ret fejl:"SELECTs til venstre og højre for UNION har ikke det samme antal resultatkolonner" i SQLite

  4. Returner sæt af post (virtuel tabel) fra funktion