sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur man jämför matriser i PostgreSQL

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!

  1. PHP PDO förberedda uttalanden

  2. Kan jag kopiera en rad i MySQL för att infoga i samma tabell?

  3. Hur EXPORT_SET() fungerar i MariaDB

  4. MySqlCommand Command.Parameters.Add är föråldrat