PostgreSQL bardzo ułatwia porównywanie tablic wartości za pomocą prostych operatorów. W tym artykule przyjrzymy się, jak porównywać tablice w bazie danych PostgreSQL.
Jak porównywać tablice w PostgreSQL
PostgreSQL umożliwia porównywanie tablic przy użyciu operatorów równości (=, <>), operatorów porządkowania (>, <,>=, <=), operatorów zawierania (@>, <@) i operatorów nakładania się (&&).
Gdy PostgreSQL porówna tablice, jako wynik zwraca t dla prawdy lub f dla fałszu.
Przyjrzyjmy się każdemu z tych operatorów jeden po drugim.
Porównaj tablice pod kątem równości
Operatory równości dokonują porównania element po elemencie, aby sprawdzić, czy dwie tablice są równe, czy nie.
Oto przykładowe zapytania SQL do porównania dwóch tablic przy użyciu operatorów równości. Następujące dwie tablice nie są równe.
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
Porównaj tablice dla zamówienia
Operatory porządkowania (>, <,>=, <=) dokonują porównania element po elemencie między dwiema tablicami, aby sprawdzić, czy każda para elementów spełnia wymagany warunek kolejności. Jeśli nie ma niezgodności, zwraca t, w przeciwnym razie f.
Oto przykład
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
W pierwszym porównaniu każdy element pierwszej tablicy jest>=każdym elementem drugiej tablicy. W związku z tym stajesz się prawdziwy. W drugim porównaniu pierwsza tablica nie ma czwartego elementu wymaganego do porównania z czwartym elementem drugiej tablicy. Dlatego porównanie kończy się niepowodzeniem i w rezultacie otrzymujesz fałsz.
Porównaj tablice pod kątem zawierania
Operatory zawierania (<@, @>) pozwalają sprawdzić, czy jedna tablica zawiera inną tablicę za pomocą operatora @> lub czy jedna tablica jest zawarta w innej tablicy za pomocą operatora <@.
#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
Porównaj tablice pod kątem nakładania się
Operator nakładania się (&&) pozwala sprawdzić, czy istnieją jakieś wspólne elementy w dwóch tablicach.
postgres=# select postgres-# array[2, 4] && array[4, 3] as overlap1, postgres-# array[0, 2] && array[1, 4] as overlap2; overlap1 | overlap2 ----------+---------- t | f
Potrzebujesz narzędzia do raportowania dla PostgreSQL? Ubiq ułatwia wizualizację danych w ciągu kilku minut i monitorowanie w pulpitach nawigacyjnych w czasie rzeczywistym. Wypróbuj już dziś!