Udostępnij za pośrednictwem


Porównania wielowartych (ARRAY)

Kolumny przechowywane w indeksie zawartości mogą zawierać wiele wartości, a kolumny wielowartościowe można porównać przy użyciu predykatu porównania ARRAY.

Predykat porównania ARRAY ma następującą składnię:

...WHERE <column> <comp_op> [<quantifier>] <comparison_list>
                
...WHERE <column> <comp_op> <value>

Zwracany jest błąd, jeśli odwołanie do kolumny nie jest kolumną wielowartościową. Typ danych kolumny musi być zgodny z elementami listy porównania. W razie potrzeby odwołanie do kolumny może rzutować jako inny typ danych.

Operator porównania (comp_op) może być dowolnym z normalnych operatorów porównania. W przypadku porównania wielowartościowego operatory porównania mają nieco inne znaczenie w zależności od tego, czy jest używany kwantyfikator. Kwantyfikatory określają, czy należy dokonać porównania względem wszystkich lub niektórych wartości na liście porównania. Funkcje operatorów porównania są podane w tabelach opisujących każdy kwantyfikator (ALL i SOME) w dalszej części tego dokumentu.

Wartość po operatorze określa pojedynczą wartość literału, która jest porównywana ze wszystkimi elementami wielowartościowej kolumny. Jeśli dowolny element pasuje do wartości, predykat ma wartość true.

Lista porównania określa tablicę wartości literałów, które są porównywane z kolumną wielowartościową. Składnia listy porównania jest następująca:

ARRAY '['<literal> [,<literal>]']'

Ważny

Należy pamiętać o składni listy porównania. Grupa literałów tworzących listę porównania musi być otoczona nawiasami kwadratowymi. Nie otaczaj pojedynczych elementów listy porównania nawiasami kwadratowymi. W związku z tym tablice [1] i ARRAY [1,2,3] są prawidłowe, ale tablica [1[,2][,3]] nie jest.

 

Metoda używana do określenia, czy porównanie wielowartościowe zwraca wartość true, czy false, jest określane przez opcjonalny kwantyfikator. W poniższych sekcjach opisano każdy kwantyfikator oraz sposób działania każdego operatora porównania w przypadku użycia kwantyfikatora.

Brak kwantyfikatora

Jeśli nie określono kwantyfikatora, każdy element po lewej stronie porównania jest porównywany z elementem w tej samej pozycji po prawej stronie. Porównanie rozpoczyna się od pierwszego elementu w tablicach i przechodzi przez ostatni element. Jeśli wszystkie elementy po lewej stronie są równoważne odpowiednim elementom po prawej stronie, liczba elementów tablicy jest używana do określenia, która tablica jest większa.

W poniższej tabeli przedstawiono operację operatorów porównania, gdy nie określono kwantyfikatora i przedstawiono krótki opis każdego z nich.

Operator Opis
= Funkcja "Równa się" zwraca wartość true, gdy każdy element po lewej stronie ma taką samą wartość jak odpowiedni element po prawej stronie, a obie tablice mają taką samą liczbę elementów.
!= lub <> Wartość "Nie równa się" zwraca wartość true, gdy co najmniej jeden element po lewej stronie ma wartości, które różnią się od odpowiednich elementów po prawej stronie lub gdy tablice po lewej i prawej stronie nie mają tej samej liczby elementów.
> Wartość "Greater than" zwraca wartość true, gdy wartość każdego elementu po lewej stronie jest większa niż wartość odpowiedniego elementu po prawej stronie. Jeśli wszystkie wartości elementów po lewej stronie dokładnie pasują do odpowiednich elementów po prawej stronie, a tablica po lewej stronie zawiera więcej elementów niż tablica po prawej stronie, wartość "greater than" zwraca wartość true.
>= Wartość "Większe niż lub równe" zwraca wartość true, gdy wartość każdego elementu po lewej stronie jest większa lub równa wartości odpowiedniego elementu po prawej stronie. Jeśli wszystkie wartości elementów po lewej stronie są równe lub większe niż odpowiednie elementy po prawej stronie, a tablica po lewej stronie ma te same lub więcej elementów niż tablica po prawej stronie, wartość "większa niż" zwraca wartość true.
< Wartość "Less than" zwraca wartość true, gdy wartość każdego elementu po lewej stronie jest mniejsza niż wartość odpowiedniego elementu po prawej stronie. Wartość "Less than" zwraca również wartość true, gdy po lewej stronie znajduje się mniej elementów niż po prawej stronie.
<= Wartość "Mniejsze niż lub równe" zwraca wartość true, gdy wartość każdego elementu po lewej stronie jest mniejsza lub równa wartości odpowiedniego elementu po prawej stronie. Jeśli wszystkie wartości elementów po lewej stronie są równe lub mniejsze niż odpowiednie elementy po prawej stronie, a tablica po lewej stronie ma te same lub mniej elementów niż tablica po prawej stronie, wartość "większa niż" zwraca wartość true.

 

WSZYSTKIE kwantyfikator

Kwantyfikator ALL określa, że każdy element po lewej stronie jest porównywany z każdym elementem po prawej stronie. Aby zwrócić wartość true, porównanie musi być prawdziwe dla każdego elementu po lewej stronie w porównaniu z każdym elementem po prawej stronie. Liczba elementów po lewej i prawej stronie tablicy nie ma wpływu na wynik.

W poniższej tabeli pokazano, jak każdy operator porównania działa z kwantyfikatorem ALL.

Operator Opis
= Wartość "Równa się" zwraca wartość true, gdy każda wartość elementu po lewej stronie jest taka sama jak każda wartość elementu po prawej stronie.
!= lub <> Wartość "Not equal to" zwraca wartość true, gdy co najmniej jedna z wartości elementu po lewej stronie różni się od dowolnej z wartości elementów po prawej stronie.
> Wartość "Greater than" zwraca wartość true, gdy każda wartość elementu po lewej stronie jest większa niż każda wartość elementu po prawej stronie.
>= Wartość "Większa niż lub równa" zwraca wartość true, gdy każda wartość elementu po lewej stronie jest większa lub równa każdej wartości elementu po prawej stronie.
< Wartość "Less than" zwraca wartość true, gdy każda wartość elementu po lewej stronie jest mniejsza niż każda wartość elementu po prawej stronie.
<= Wartość "Mniejsze niż lub równe" zwraca wartość true, gdy każda wartość elementu po lewej stronie jest mniejsza lub równa każdej wartości elementu po prawej stronie.

 

KWantyfikator (lub DOWOLNY)

Kwantyfikator SOME i kwantyfikator ANY mogą być używane zamiennie. Podobnie jak kwantyfikator ALL, kwantyfikator SOME określa, że każdy element po lewej stronie jest porównywany z każdym elementem po prawej stronie. Aby zwrócić wartość true, porównanie musi być prawdziwe dla co najmniej jednego elementu po lewej stronie w porównaniu z dowolnym elementem po prawej stronie. Liczba elementów w tablicach po lewej i prawej stronie nie ma wpływu na wynik.

W poniższej tabeli pokazano, jak każdy operator porównania działa z kwantyfikatorem SOME.

Operator Opis
= Wartość "Równa się" zwraca wartość true, gdy co najmniej jedna z wartości elementu po lewej stronie jest taka sama jak każda z wartości elementów po prawej stronie.
!= lub <> Wartość "Nie równa się" zwraca wartość true, gdy żadna z wartości elementu po lewej stronie nie jest taka sama jak każda z wartości elementów po prawej stronie.
> Wartość "Greater than" zwraca wartość true, gdy co najmniej jedna z wartości elementu po lewej stronie jest większa niż każda z wartości elementu po prawej stronie.
>= Wartość "Większe niż lub równe" zwraca wartość true, gdy co najmniej jedna z wartości elementu po lewej stronie jest większa lub równa dowolnej wartości elementu po prawej stronie.
< Wartość "Less than" zwraca wartość true, gdy co najmniej jedna z wartości elementu po lewej stronie jest mniejsza niż jedna z wartości elementów po prawej stronie.
<= Wartość "Mniejsze niż lub równe" zwraca wartość true, gdy co najmniej jedna z wartości elementu po lewej stronie jest mniejsza lub równa dowolnej wartości elementu po prawej stronie.

 

Przykłady

Poniższy przykład sprawdza, czy dokumenty znajdują się w kategoriach "Finanse" lub "Planowanie":

SELECT System.ItemUrl FROM SystemIndex WHERE System.Category =
SOME ARRAY['Finance','Planning']

Wszystkie poniższe porównania oceniają wartość true. Pamiętaj, że w rzeczywistym użyciu składnia zapytania wyszukiwania wymaga lewej strony, aby być właściwością, a nie wartością literału.

ARRAY [1,2] > ARRAY [1,1]
ARRAY [1,2] > ARRAY [1,1,2]
ARRAY [1,2] < ARRAY [1,2,3]
ARRAY [1,2] = SOME ARRAY [1,12,27,35,2]
ARRAY [1,1] != ALL ARRAY [1,2]
ARRAY [1,20,21,22] < SOME ARRAY [0,40]
ARRAY [1,20,21,22] < ANY ARRAY [0,40]

referencyjne

JAK predykat

porównanie wartości literału

predykat o wartości NULL

koncepcyjne

predykatówFull-Text

predykatów innych niżFull-Text