PostgreSQL permet de comparer très facilement des tableaux de valeurs à l'aide d'opérateurs simples. Dans cet article, nous verrons comment comparer des tableaux dans la base de données PostgreSQL.
Comment comparer des tableaux dans PostgreSQL
PostgreSQL vous permet de comparer des tableaux à l'aide d'opérateurs d'égalité (=, <>), d'opérateurs d'ordre (>, <,>=, <=), d'opérateurs de confinement (@>, <@) et d'opérateurs de chevauchement (&&).
Une fois que PostgreSQL™ a comparé les tableaux, il renvoie t pour vrai ou f pour faux comme résultat.
Examinons chacun de ces opérateurs un par un.
Comparer les tableaux pour l'égalité
Les opérateurs d'égalité effectuent une comparaison élément par élément pour vérifier si les deux tableaux sont égaux ou non.
Voici des exemples de requêtes SQL pour comparer deux tableaux à l'aide d'opérateurs d'égalité. Les deux tableaux suivants ne sont pas égaux.
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
Comparer les baies pour la commande
Les opérateurs de commande (>, <,>=, <=) effectuent une comparaison élément par élément entre deux tableaux pour vérifier si chaque paire d'éléments respecte la condition d'ordre requise. S'il n'y a pas d'incompatibilité, il renvoie t, sinon f.
Voici un exemple
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
Dans la première comparaison, chaque élément du premier tableau est>=chaque élément du deuxième tableau. Par conséquent, vous devenez vrai. Dans la deuxième comparaison, le premier tableau n'a pas de 4e élément, requis pour la comparaison avec le 4e élément du deuxième tableau. Par conséquent, la comparaison échoue et vous obtenez faux en conséquence.
Comparer les baies pour le confinement
Les opérateurs de confinement (<@, @>) vous permettent de vérifier si un tableau contient un autre tableau à l'aide de l'opérateur @>, ou si un tableau est contenu par un autre tableau à l'aide de l'opérateur <@.
#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
Comparer les tableaux pour le chevauchement
L'opérateur de chevauchement (&&) vous permet de vérifier s'il existe des éléments communs dans deux tableaux.
postgres=# select postgres-# array[2, 4] && array[4, 3] as overlap1, postgres-# array[0, 2] && array[1, 4] as overlap2; overlap1 | overlap2 ----------+---------- t | f
Besoin d'un outil de reporting pour PostgreSQL ? Ubiq permet de visualiser facilement les données en quelques minutes et de les surveiller dans des tableaux de bord en temps réel. Essayez-le aujourd'hui !