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

Come confrontare gli array in PostgreSQL

PostgreSQL rende molto semplice confrontare array di valori usando semplici operatori. In questo articolo, vedremo come confrontare gli array nel database PostgreSQL.


Come confrontare gli array in PostgreSQL

PostgreSQL consente di confrontare gli array utilizzando operatori di uguaglianza (=, <>), operatori di ordinamento (>, <,>=, <=), operatori di contenimento (@>, <@) e operatori di sovrapposizione (&&).

Dopo che PostgreSQL ha confrontato gli array, restituisce t per true o f per false come risultato.

Diamo un'occhiata a ciascuno di questi operatori uno per uno.


Confronta gli array per l'uguaglianza

Gli operatori di uguaglianza eseguono un confronto elemento per elemento per verificare se i due array sono uguali o meno.

Di seguito sono riportate query SQL di esempio per confrontare due array utilizzando gli operatori di uguaglianza. I seguenti due array non sono uguali.

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


Confronta gli array per l'ordine

Gli operatori di ordinamento (>, <,>=, <=) eseguono un confronto elemento per elemento tra due array per verificare se ciascuna coppia di elementi segue la condizione dell'ordine richiesta. Se non c'è mancata corrispondenza restituisce t, altrimenti f.

Ecco un esempio

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

Nel primo confronto, ogni elemento del primo array è>=ogni elemento del secondo array. Quindi, diventi vero. Nel secondo confronto, il primo array non ha il 4° elemento, richiesto per il confronto con il 4° elemento del secondo array. Pertanto, il confronto non riesce e di conseguenza diventi falso.


Confronta gli array per il contenimento

Gli operatori di contenimento (<@, @>) consentono di verificare se un array contiene un altro array utilizzando l'operatore @> o se un array è contenuto da un altro array utilizzando l'operatore <@.

#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


Confronta gli array per la sovrapposizione

L'operatore di sovrapposizione (&&) ti consente di verificare se sono presenti elementi comuni in due array.

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

Hai bisogno di uno strumento di reporting per PostgreSQL? Ubiq semplifica la visualizzazione dei dati in pochi minuti e il monitoraggio in dashboard in tempo reale. Provalo oggi!