sql >> Databáze >  >> RDS >> PostgreSQL

Jak porovnávat pole v PostgreSQL

PostgreSQL velmi usnadňuje porovnávání polí hodnot pomocí jednoduchých operátorů. V tomto článku se podíváme na to, jak porovnávat pole v databázi PostgreSQL.


Jak porovnávat pole v PostgreSQL

PostgreSQL umožňuje porovnávat pole pomocí operátorů rovnosti (=, <>), operátorů řazení (>, <,>=, <=), operátorů omezení (@>, <@) a operátorů překrývání (&&).

Poté, co PostgreSQL porovná pole, jako výsledek vrátí t pro true nebo f pro false.

Podívejme se na každý z těchto operátorů jeden po druhém.


Porovnání polí pro rovnost

Operátoři rovnosti porovnávají prvek po prvku, aby zkontrolovali, zda jsou obě pole stejná nebo ne.

Zde jsou ukázkové dotazy SQL pro porovnání dvou polí pomocí operátorů rovnosti. Následující dvě pole nejsou stejná.

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


Porovnejte pole pro objednávku

Operátory řazení (>, <,>=, <=) porovnávají prvek po prvku mezi dvěma poli, aby zkontrolovaly, zda každý pár prvků vyhovuje požadované podmínce pořadí. Pokud nedojde k žádné neshodě, vrátí t, jinak f.

Zde je příklad

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

V prvním srovnání je každý prvek prvního pole>=každý prvek druhého pole. Takže máte pravdu. Ve druhém srovnání první pole nemá 4. prvek, který je nutný pro srovnání se 4. prvkem druhého pole. Proto se srovnání nezdaří a výsledkem je false.


Porovnání polí pro omezení

Operátory omezení (<@, @>) vám umožňují zkontrolovat, zda jedno pole obsahuje jiné pole pomocí operátoru @>, nebo zda je jedno pole obsaženo v jiném poli pomocí operátoru <@

.
#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


Porovnejte pole pro překrytí

Operátor překrytí (&&) vám umožňuje zkontrolovat, zda jsou ve dvou polích nějaké společné prvky.

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

Potřebujete reportovací nástroj pro PostgreSQL? Ubiq usnadňuje vizualizaci dat během několika minut a sledování na řídicích panelech v reálném čase. Zkuste to ještě dnes!

  1. Chyba MySQL 2006:server mysql zmizel

  2. 12c Přesun datových souborů online

  3. V MySQL mohu odložit kontroly referenční integrity až do potvrzení

  4. Jaký je průměrný plat vývojáře SQL?