CASE式では、IF ... THEN ... ELSE論理を式に使用できます。
単純CASE式では、CASEは、exprがcomparison_exprに等しい最初のWHEN ... THENペアを探し、return_exprを返します。この条件に合致するWHEN ... THENペアがなく、ELSE句が存在する場合、CASEはelse_exprを返します。それ以外の場合、CASEはNULLを返します。
検索CASE式では、CASEはconditionがtrueであることが見つかるまで左から右に検索し、return_exprを返します。conditionがtrueであることが見つからず、ELSE句が存在する場合、CASEはelse_exprを返します。それ以外の場合、CASEはNULLを返します。
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
Copyright (C) 2003, 2007, Oracle. All rights reserved.