條件指定一或多個表示式和邏輯 (布林值) 運算子的組合。OLAP 表示式語法具有下列條件類型:
比較條件會將一個表示式與另一個表示式做比較。此類比較的結果可以是 TRUE、FALSE 或 NULL。
您可以使用下列比較運算子:
運算子 |
說明 |
|---|---|
> |
大於 |
>= |
大於或等於 |
< |
小於 |
<= |
小於或等於 |
= |
等於 |
|
不等於 |
<> |
大於或小於 |
expr { > | >= | < | <= | = | != | ^= | <> } expr
expr -- 可以是任何表示式。
5 > 3 為 true,4 != 5 為 true,6 >= 9 為 false。
群組比較條件指定的是與清單或子查詢中任一或所有成員的比較。
您可以使用下列比較運算子:
運算子 |
說明 |
|---|---|
> |
大於 |
>= |
大於或等於 |
< |
小於 |
<= |
小於或等於 |
= |
等於 |
|
不等於 |
<> |
大於或小於 |
|
如果清單中的其中一或多個值相符,便傳回 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。
樣式比對條件可用來比較字元資料。此類別有兩個運算子群組:LIKE 和 REGEXP_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 會執行一般表示式比對,而非 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 -- 要搜尋的表示式。可以是任何資料類型:CHAR、VARCHAR2、NCHAR、NVARCHAR2、CLOB 或 NCLOB。
pattern -- 要搜尋的表示式。通常是文字,而且可以是任何資料類型:CHAR、VARCHAR2、NCHAR 或 NVARCHAR2。最多可包含 512 個位元組。
match_parameter -- 可讓您變更函數預設對應行為的文字。您可以指定下列一或多個值:
c:對應時區分大小寫。
i:對應時不區分大小寫。
m:將來源字串視為多個資料行來處理。REGEXP_LIKE 會將 ^ 和 $ 分別解譯成來源字串中任何位置之任一資料行的開始和結束,而不僅僅是解譯成整個來源字串的開始和結束。依照預設,REGEXP_LIKE 會將來源字串視為單一的資料行。
n:換行字元位於句號 (萬用字元) 所對應的字元之中。依照預設,換行字元不在其中。
x:略過空格字元。
REGEXP_LIKE (first_name, '^Ste(v|ph)en$') 會對應 first_name 中的 Steven 和 Stephen,而不會對應 Stevens 或 Esteven。
版權所有 © 2003,2007,Oracle。保留一切權利。