共用方式為


多重值 (ARRAY) 比較

儲存在內容索引中的資料行可以有多個值,而且可以使用 ARRAY 比較述詞來比較這些多重值資料行。

ARRAY 比較述詞具有下列語法:

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

如果資料行參考不是多重值資料行,則會傳回錯誤。 資料行資料類型必須與比較清單的專案相容。 如有必要,資料行參考可以 轉換成 另一個資料類型。

比較運算子 (comp_op) 可以是任何一般比較運算子。 在多重值比較中,比較運算子會根據是否使用數量詞而略有不同意義。 數量詞會識別是否應該針對比較清單中的所有或部分值進行比較。 比較運算子的函式會在本文稍後描述每個數量詞 (ALL 和 SOME) 的資料表中提供。

運算子之後的值會指定單一常值,與多重值資料行的所有元素進行比較。 如果有任何專案符合值,則述詞為 true。

比較清單會指定與多重值資料行比較的常值陣列。 比較清單的語法如下:

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

重要

請注意比較清單語法。 組成比較清單的常值群組必須以方括弧括住。 請勿以方括弧括住比較清單的個別元素。 因此,ARRAY [1] 和 ARRAY [1,2,3] 有效,但 ARRAY [1[,2][,3]] 無效。

 

用來判斷多重值比較傳回 true 或 false 的方法是由選擇性數量詞所指定。 下列各節說明每個數量詞,以及使用數量詞時每個比較運算子的運作方式。

Absent 數量詞

如果未指定數量詞,比較左邊的每個元素都會與右邊相同位置中的元素進行比較。 比較會從陣列中的第一個專案開始,並繼續進行最後一個專案。 如果左邊的所有元素都相當於右邊的對應元素,則會使用陣列元素數目來判斷哪一個陣列更大。

下表顯示未指定數量詞時比較運算子的作業,並提供每個值的簡短描述。

運算子 描述
= 當每個左側元素的值與對應的右側元素相同,而且這兩個數組都有相同的元素數目時,'Equal to' 會傳回 true。
!= 或 <> 當一或多個左側元素的值與對應的右側元素不同時,或當左側和右側陣列沒有相同數目的專案時,'Not equal to' 會傳回 true。
> 當每個左側元素的值大於對應右側元素的值時,'Greater than' 會傳回 true。 如果所有左側元素值完全符合對應的右側元素,而左側陣列的元素比右邊陣列還多,則 'greater than' 會傳回 true。
>= 當每個左側元素的值大於或等於對應右側元素的值時,'Greater than or equal to' 會傳回 true。 如果所有左側元素值都等於或大於對應的右側元素,而左側陣列的元素與右側陣列具有相同或更多的元素,則 'greater than' 會傳回 true。
< 當每個左側元素的值小於對應右側元素的值時,'Less than' 會傳回 true。 當左側的元素少於右側時,'Less than' 也會傳回 true。
<= 當每個左側元素的值小於或等於對應的右側元素值時,'Less than or equal to' 會傳回 true。 如果所有左側元素值都等於或小於對應的右側元素,而左側陣列的元素與右側陣列相同或更少,則 'greater than' 會傳回 true。

 

ALL 數量詞

ALL 數量詞會指定左側的每個專案會與右側的每個元素進行比較。 若要傳回 true,相較于右邊的每個元素,左側的每個元素的比較必須為 true。 左邊和右陣列端中的元素數目不會影響結果。

下表顯示每個比較運算子如何與 ALL 數量詞搭配運作。

運算子 描述
= 當每個左側元素值與每個右側元素值相同時,'Equal to' 會傳回 true。
!= 或 <> 當至少有一個左側元素值與任何右側元素值不同時,'不等於' 會傳回 true。
> 當每個左側元素值大於每個右側元素值時,'Greater' 會傳回 true。
>= 當每個左側元素值大於或等於每個右側元素值時,'Greater than or equal to' 會傳回 true。
< 當每個左側元素值小於每個右側元素值時,'Less than' 會傳回 true。
<= 當每個左側元素值小於或等於每個右側元素值時,'Less than or equal to' 會傳回 true。

 

SOME (或 ANY) 數量詞

SOME 數量詞和 ANY 數量詞可以交替使用。 如同 ALL 數量詞,SOME 數量詞會指定左側的每個元素都會與右側的每個元素進行比較。 若要傳回 true,相較于右邊的任何元素,至少一個左側元素的比較必須為 true。 左邊和右側陣列的專案數目不會影響結果。

下表顯示每個比較運算子如何與 SOME 數量詞搭配運作。

運算子 描述
= 當至少有一個左側元素值與任何右側元素值相同時,'Equal to' 會傳回 true。
!= 或 <> 當沒有任何左側專案值與任何右側元素值相同時,'不等於' 會傳回 true。
> 當至少有一個左側元素值大於任一右側元素值時,'Greater than' 會傳回 true。
>= 當至少有一個左側元素值大於或等於任何一個右側元素值時,「大於或等於」會傳回 true。
< 當至少有一個左側元素值小於任何一個右側元素值時,'Less than' 會傳回 true。
<= 當至少有一個左側元素值小於或等於任何一個右側元素值時,'Less than or equal to' 會傳回 true。

 

範例

下列範例會檢查檔是否位於 「Finance」 或 「Planning」 類別中:

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

下列比較全部都評估為 true。 請記住,在實際使用中,搜尋查詢語法需要左邊是屬性,而不是常值。

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]

參考

LIKE 述詞

常值比較

Null 述詞

概念

全文檢索述詞

非全文檢索述詞