CASE式

CASE式では、IF ... THEN ... ELSE論理を式に使用できます。

単純CASE式では、CASEは、exprcomparison_exprに等しい最初のWHEN ... THENペアを探し、return_exprを返します。この条件に合致するWHEN ... THENペアがなく、ELSE句が存在する場合、CASEelse_exprを返します。それ以外の場合、CASEはNULLを返します。

検索CASE式では、CASEconditionがtrueであることが見つかるまで左から右に検索し、return_exprを返します。conditionがtrueであることが見つからず、ELSE句が存在する場合、CASEelse_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の値に応じてLowMediumまたは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