共用方式為


多重值 (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 的方法是由選擇性數量值所指定。 下列各節說明每個數量值,以及每個比較運算元在使用數量值時的運作方式。

缺席數量值

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

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

算子 描述
= 當每個左側元素的值與對應的右側元素相同,而且兩個陣列都有相同的元素數目時,『等於』 會傳回 true。
!= 或 <> 當一或多個左側元素的值與對應的右側元素不同,或當左側和右側陣列沒有相同數量的元素時,『不等於』 會傳回 true。
> 當每個左側元素的值大於對應右邊元素的值時,『大於』 會傳回 true。 如果所有左側元素值完全符合對應的右側元素,而左側數位的元素數目超過右側陣列,則 『大於』 會傳回 true。
>= 當每個左邊元素的值大於或等於對應右邊元素的值時,『大於或等於』 會傳回 true。 如果所有左側元素值都等於或大於對應的右側元素,而左側陣列的元素與右側陣列具有相同或更多的元素,『greater』 會傳回 true。
< 當每個左側元素的值小於對應右邊元素的值時,『Less than』 會傳回 true。 當左側的元素少於右側時,「小於」也會傳回 true。
<= 當每個左側元素的值小於或等於對應右邊元素的值時,『小於或等於』 會傳回 true。 如果所有左側元素值都等於或小於對應的右側元素,而左側數位的元素與右側數位的元素相同或更少,則 'greater than' 會傳回 true。

 

ALL 數量值

ALL 數量值會指定左側的每個元素都會與右側的每個元素進行比較。 若要傳回 true,相較於右邊的每個元素,左側的每個元素的比較必須為 true。 左右陣列端中的元素數目對結果沒有任何影響。

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

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

 

SOME (或 ANY) 數量值

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

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

算子 描述
= 當至少有一個左側元素值與任何右側元素值相同時,『等於』 會傳回 true。
!= 或 <> 當任何左側元素值都與任何右側元素值相同時,『不等於』 會傳回 true。
> 當至少有一個左側元素值大於任何一個右側元素值時,『大於』 會傳回 true。
>= 當至少有一個左側元素值大於或等於任何一個右側元素值時,『大於或等於』 會傳回 true。
< 當至少有一個左側元素值小於任何一個右側元素值時,『Less than』 會傳回 true。
<= 當至少有一個左側元素值小於或等於任何一個右側元素值時,『小於或等於』 會傳回 true。

 

例子

下列範例會檢查檔是否位於「財務」或「規劃」類別中:

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 述詞

概念

Full-Text 述詞

非Full-Text 述詞