PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como comparar arrays no PostgreSQL


O PostgreSQL torna muito fácil comparar arrays de valores usando operadores simples. Neste artigo, veremos como comparar arrays no banco de dados PostgreSQL.



Como comparar arrays no PostgreSQL


O PostgreSQL permite comparar arrays usando operadores de igualdade (=, <>), operadores de ordenação (>, <,>=, <=), operadores de contenção (@>, <@) e operadores de sobreposição (&&).

Depois que o PostgreSQL compara os arrays, ele retorna t para true ou f para false como resultado.

Vejamos cada um desses operadores um por um.



Comparar matrizes para igualdade


Os operadores de igualdade fazem uma comparação elemento por elemento para verificar se os dois arrays são iguais ou não.

Aqui estão exemplos de consultas SQL para comparar duas matrizes usando operadores de igualdade. As duas matrizes a seguir não são iguais.
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



Comparar matrizes para pedido


Os operadores de ordenação (>, <,>=, <=) fazem uma comparação elemento por elemento entre dois arrays para verificar se cada par de elementos segue a condição de ordem exigida. Se não houver incompatibilidade, ele retornará t, senão f.

Aqui está um exemplo
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

Na primeira comparação, cada elemento do primeiro array é>=cada elemento do segundo array. Assim, você se torna verdadeiro. Na segunda comparação, o primeiro array não possui o 4º elemento, necessário para comparação com o 4º elemento do segundo array. Portanto, a comparação falha e você obtém falso como resultado.



Comparar matrizes para contenção


Os operadores de contenção (<@, @>) permitem verificar se um array contém outro array usando o operador @>, ou se um array está contido por outro array usando o operador <@.
#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



Comparar matrizes para sobreposição


O operador de sobreposição (&&) permite verificar se há elementos comuns em duas matrizes.
postgres=# select
postgres-# array[2, 4] && array[4, 3] as overlap1,
postgres-# array[0, 2] && array[1, 4] as overlap2;
 overlap1 | overlap2
----------+----------
 t        | f

Precisa de uma ferramenta de relatório para PostgreSQL? A Ubiq facilita a visualização de dados em minutos e o monitoramento em painéis em tempo real. Experimente hoje!