PostgreSQL прави много лесно сравняването на масиви от стойности с помощта на прости оператори. В тази статия ще разгледаме как да сравняваме масиви в PostgreSQL база данни.
Как да сравняваме масиви в PostgreSQL
PostgreSQL ви позволява да сравнявате масиви с помощта на оператори за равенство (=, <>), оператори за подреждане (>, <,>=, <=), оператори за ограничаване (@>, <@) и оператори за припокриване (&&).
След като PostgreSQL сравнява масиви, той връща t за true или f за false като резултат.
Нека разгледаме всеки един от тези оператори един по един.
Сравнете масиви за равенство
Операторите за равенство правят сравнение елемент по елемент, за да проверят дали двата масива са равни или не.
Ето примерни SQL заявки за сравняване на два масива с помощта на оператори за равенство. Следните два масива не са равни.
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
Сравнете масиви за поръчка
Операторите за подреждане (>, <,>=, <=) правят сравнение елемент по елемент между два масива, за да проверят дали всяка двойка елементи следва изискваното условие за поръчка. Ако няма несъответствие, връща t, иначе f.
Ето един пример
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
При първото сравнение всеки елемент от първия масив е>=всеки елемент от втория масив. Следователно, вие получавате истина. При второ сравнение първият масив няма 4-ти елемент, необходим за сравнение с 4-ти елемент от втория масив. Следователно сравнението е неуспешно и в резултат получавате невярно.
Сравнете масиви за задържане
Операторите за ограничаване (<@, @>) ви позволяват да проверите дали един масив съдържа друг масив с помощта на оператор @> или дали един масив се съдържа от друг масив с помощта на <@ оператор.
#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
Сравнете масиви за припокриване
Операторът за припокриване (&&) ви позволява да проверите дали има общи елементи в два масива.
postgres=# select postgres-# array[2, 4] && array[4, 3] as overlap1, postgres-# array[0, 2] && array[1, 4] as overlap2; overlap1 | overlap2 ----------+---------- t | f
Нуждаете се от инструмент за отчитане за PostgreSQL? Ubiq улеснява визуализирането на данни за минути и наблюдение в табла за управление в реално време. Опитайте го днес!