條件

條件指定一或多個表示式和邏輯 (布林值) 運算子的組合。OLAP 表示式語法具有下列條件類型:

簡單比較條件

比較條件會將一個表示式與另一個表示式做比較。此類比較的結果可以是 TRUEFALSENULL

您可以使用下列比較運算子:

簡單比較運算子
運算子
說明
>
大於
>=
大於或等於
<
小於
<=
小於或等於
=
等於

!=
^=

不等於
<>
大於或小於

語法

expr { > | >= | < | <= | = | != | ^= | <> } expr 

引數

expr -- 可以是任何表示式。

範例

5 > 3 為 true,4 != 5 為 true,6 >= 9 為 false。

群組比較條件

群組比較條件指定的是與清單或子查詢中任一或所有成員的比較。

您可以使用下列比較運算子:

群組比較運算子
運算子
說明
>
大於
>=
大於或等於
<
小於
<=
小於或等於
=
等於

!=
^=

不等於
<>
大於或小於

ANY
SOME

如果清單中的其中一或多個值相符,便傳回 True,如果沒有值相符,便傳回 False。
ALL
如果清單中的所有值均相符,便傳回 True,如果一或多個值不符,便傳回 False。

語法

expr
     { = | != | ^= | <> | > | < | >= | <= }
     { ANY | SOME | ALL }
     ({ expression_list | subquery })


範例

5 >= ALL (5, 10, 15) 為 true,5 <> ANY (5, 10, 15) 為 true。

(color, size) = SOME (('RED', 'L'), ('GREEN', 'M')) 會針對大型紅色和中型綠色項目傳回 true。

範圍條件

BETWEEN 運算子可測試某個值是否在特定的值範圍內。如果測試的值大於或等於低值,並且小於或等於高值,便會傳回 true。

語法

expr [ NOT ] BETWEEN expr AND expr

範例

7 NOT BETWEEN 10 AND 15 為 true。

多重條件

連接詞可使用兩個條件比較單一表示式。

連接詞
運算子
說明
AND
如果兩個元件條件均為 TRUE,便傳回TRUE。如果其中一個為 FALSE,便傳回 FALSE。其他情況則傳回 UNKNOWN
OR
如果其中一個元件條件為 TRUE,便傳回 TRUE。如果兩者皆為 FALSE,便傳回 FALSE。其他情況則傳回 UNKNOWN

語法

expr operator condition1 { AND | OR } condition2 

範例

5 < 7 AND 5 > 3 為 true;5 < 3 OR 10 < 15 為 true。

否定

NOT 運算子會使條件的意義變相反。如果條件為 FALSE,便傳回 TRUE。如果條件為 TRUE,便傳回 FALSE。如果條件為 UNKNOWN,則保持為 UNKNOWN

語法

NOT {BETWEEN | IN | LIKE | NULL }

範例

5 IS NOT NULL 為 true;5 NOT IN (5, 10, 15) 為 false。

特殊條件

IS 運算子可測試特殊的條件,例如空值、無限及不是數字的值。

特殊條件運算子
運算子 說明
IS INFINITE 如果表示式為無限,便會傳回 TRUE,否則會傳回 FALSE
IS NAN 如果表示式不是數字,便會傳回 TRUE,否則會傳回 FALSE
IS NULL 如果表示式為空值,便會傳回 TRUE,否則會傳回 FALSE

語法

expr IS [ NOT ] NULL

範例

13 IS NOT NULL 為 true。

樣式比對條件

樣式比對條件可用來比較字元資料。此類別有兩個運算子群組:LIKEREGEXP_LIKE

LIKE 運算子

LIKE 運算子可用來指定與樣式比對相關的測試。相等運算子 (=) 會讓一個字元值與另一個字元值完全對應,LIKE 運算子則會比對由特殊樣式比對字元 (萬用字元) 所定義的樣式。

您可以從下列 LIKE 運算子選擇:

LIKE 樣式比對運算子
運算子 說明
LIKE

使用輸入字元集中的字元。

LIKEC 使用 Unicode 完整字元。它會將 Unicode 補充字元視為兩個字元。
LIKE2 使用 UCS2 字碼指標。它會將 Unicode 補充字元視為單一字元。
LIKE4 使用 UCS4 字碼指標。它會將複合字元視為單一字元。

語法

char1 [ NOT ] ( LIKE | LIKEC | LIKE2 | LIKE4 )
  char2 [ ESCAPE esc_char ]

引數

char1 -- 搜尋值的文字表示式。

char2 -- 樣式的文字表示式。樣式可以包含下列萬用字元:

esc_char -- 文字表示式,通常是個文字,長度為一個字元。此遁離字元會將樣式中的底線或百分比符號,識別為文字字元而非萬用字元。您也可以重複遁離字元,來搜尋遁離字元本身。例如,如果遁離字元是 @,您可以使用 @% 來搜尋 %,以及使用 @@ 來搜尋 @。

範例

'Ducks' LIKE 'Duck_''Ducky' LIKE 'Duck_' 為 true。

'Duckling' LIKE 'Duck_' 為 false。

'Duckling' LIKE 'Duck%' 為 true。

REGEXP_LIKE 運算子

REGEXP_LIKE 會執行一般表示式比對,而非 LIKE 所執行的簡單樣式比對。此運算子會使用輸入字元集所定義的字元來評估字串。

Oracle 一般表示式符合 IEEE Portable Operating System Interface (POSIX) 一般表示式標準,以及符合 Unicode Consortium 的 Unicode Regular Expression Guidelines。如需有關一般表示式的詳細資訊,請參閱 Oracle Database SQL Reference

語法

REGEXP_LIKE(source_char, pattern
            [, match_parameter ]
           )

引數

source_char -- 要搜尋的表示式。可以是任何資料類型:CHARVARCHAR2NCHARNVARCHAR2CLOBNCLOB

pattern -- 要搜尋的表示式。通常是文字,而且可以是任何資料類型:CHARVARCHAR2NCHARNVARCHAR2。最多可包含 512 個位元組。

match_parameter -- 可讓您變更函數預設對應行為的文字。您可以指定下列一或多個值:

範例

REGEXP_LIKE (first_name, '^Ste(v|ph)en$') 會對應 first_name 中的 Steven 和 Stephen,而不會對應 Stevens 或 Esteven。