CASE 表示式可讓您在表示式中使用 IF ... THEN ... ELSE 邏輯。
在簡單的狀況表示式中,CASE 會搜尋第一組 WHEN ... THEN,其中 expr 等於 comparison_expr,,然後會傳回 return_expr。如果沒有任何一組 WHEN ... THEN 符合這個條件,但是有 ELSE 子句存在時,CASE 就會傳回 else_expr。否則,CASE 會傳回空值。
在被搜尋的 CASE 表示式中,CASE 會由左向右搜尋,一旦找到為 true 的 condition,就傳回 return_expr。如果找不到任何為 true 的 condition,但是有 ELSE 子句存在時,CASE 就會傳回 else_expr。否則,CASE 會傳回空值。
與 else_expression 引數相同
CASE { simple_case_expression
| searched_case_expression
}
[ ELSE else_expression ]
END
simple_case_expression::=
expr WHEN comparison_expr
THEN return_expr
[ WHEN comparison_expr
THEN return_expr ]...
searched_case_expression::=
WHEN condition THEN return_expr
[ WHEN condition THEN return_expr ]...
expr -- 目前測試的基礎表示式。
comparison_expr -- 測試 expr 時所依據的表示式。它必須與 expr 為相同的基本資料類型 (數字或文字)。
condition -- 條件表示式。
return_expr -- 找到相符項目或條件為 true 時所傳回的值。
以下敘述句會依據 credit_limit 的值,傳回 Low、Medium 或 High:
CASE credit_limit WHEN 100 THEN 'Low' WHEN 5000 THEN 'High' ELSE 'Medium'
下一個敘述句中,如果薪資大於或等於 2000,便會傳回實際的薪資,如果小於 2000,則傳回 2000。
CASE WHEN salary > 2000 THEN salary ELSE 2000 END
版權所有 © 2003,2007,Oracle。保留一切權利。