CASE 句

CASE 句では、 if-then-else 型の論理を指定します。

CASE の構文
CASE <value:expression> WHEN <compare_value:expression>
     THEN result [ WHEN <compare_value:expression> THEN result ...]
     [ ELSE result ]
END

CASE WHEN <condition>
     THEN result [ WHEN <condition> THEN result ...]
     [ ELSE result ]
END

<condition> ::=
    <condition> AND <condition>
  | <condition> OR <condition>
  | NOT <condition>
  | ( <condition> )
  | <value> <binary operator> <value> [ , <value> ]*
  | <value> <binary operator> ( <value> [ , <value> ]* )
  | <value> BETWEEN <value> AND <value>
  | <value> <unary operator>

CASE 句は、以下の 2 つの方法で使用できます。

  1. CASE で式を評価し、値を取得します。つづいて、その値を各 WHEN 句の式と比較します。一致が見つかると 結果 値が返されます。

  2. 一致が見つかるまで CASE で各 WHEN 句の条件を評価します。一致が見つかると 結果 値が返されます。

どちらの場合も、 ELSE 句がなく、一致が見つからなければ、 CASE から NULL が返されます。

すべての 結果 式は、型に整合性があることが必要です。たとえば、1 つの 結果boolean 型として、もう 1 つの結果を integer 型とすることはできません。ただし、1 つの 結果integer 型、もう 1 つの結果を float 型とすることはできます。

CASE の使用方法の例については、付録「 CASE 句の例 」を参照してください。