PostgreSQL gör det mycket enkelt att jämföra matriser av värden med enkla operatorer. I den här artikeln kommer vi att titta på hur man jämför arrayer i PostgreSQL-databasen.
Hur man jämför matriser i PostgreSQL
PostgreSQL låter dig jämföra arrayer med hjälp av likhetsoperatorer (=, <>), beställningsoperatorer (>, <,>=, <=), inneslutningsoperatorer (@>, <@) och överlappningsoperatorer (&&).
Efter att PostgreSQL jämför arrayer, returnerar den t för sant eller f för falskt som resultat.
Låt oss titta på var och en av dessa operatörer en efter en.
Jämför matriser för jämlikhet
Likhetsoperatorer gör en element-för-element-jämförelse för att kontrollera om de två arrayerna är lika eller inte.
Här är exempel på SQL-frågor för att jämföra två arrayer med hjälp av likhetsoperatorer. Följande två arrayer är inte lika.
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
Jämför matriser för beställning
Ordningsoperatorer (>, <,>=, <=) gör en element-för-element-jämförelse mellan två arrayer för att kontrollera om varje par av element följer det erforderliga ordningsvillkoret. Om det inte finns någon missmatchning returnerar den t, annars f.
Här är ett exempel
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örsta jämförelsen är varje element i den första arrayen>=varje element i den andra arrayen. Därför blir du sann. I den andra jämförelsen har den första arrayen inte det 4:e elementet, vilket krävs för jämförelse med det 4:e elementet i den andra arrayen. Därför misslyckas jämförelsen och du blir falsk som ett resultat.
Jämför matriser för inneslutning
Inneslutningsoperatorer (<@, @>) låter dig kontrollera om en array innehåller en annan array med @>-operatorn, eller om en array innehåller en annan array med <@-operatorn.
#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
Jämför matriser för överlappning
Överlappningsoperator (&&) låter dig kontrollera om det finns några gemensamma element i två arrayer.
postgres=# select postgres-# array[2, 4] && array[4, 3] as overlap1, postgres-# array[0, 2] && array[1, 4] as overlap2; overlap1 | overlap2 ----------+---------- t | f
Behöver du ett rapporteringsverktyg för PostgreSQL? Ubiq gör det enkelt att visualisera data på några minuter och övervaka i realtidsinstrumentpaneler. Prova det idag!