標準 SQL の条件式

条件式は、入力の評価順序に制約を課します。基本的に、これらは短絡を使用して左から右に評価され、選択された出力のみを評価します。対照的に、正規関数へのすべての入力は関数の呼び出し前に評価されます。条件式での短絡は、エラー処理やパフォーマンス チューニングに利用できます。

構文 入力データ型 結果のデータ型 説明

CASE expr
      WHEN value THEN result
      [WHEN ...]
      [ELSE else_result]
      END
exprvalue: 任意の型 resultelse_result: 入力型のスーパータイプ。 expr と、連続する各 WHEN 句の値を比較し、この比較で true が返される最初の結果を返します。残りの WHEN 句と else_result は評価されません。expr = value 比較ですべての WHEN 句に関して FALSE または NULL が返される場合、else_result が存在すればそれを返し、存在しない場合は NULL を返します。expr および value 式は、共通のスーパータイプへの暗黙的な強制型変換が可能でなければなりません。等価比較は、強制型変換された値に対して行われます。result および else_result 式を共通のスーパータイプに強制的に型変換できる必要があります。

CASE
      WHEN cond1 THEN result
      [WHEN cond2...]
      [ELSE else_result]
      END
cond: BOOL resultelse_result: 入力型のスーパータイプ。 連続する各 WHEN 句の条件 cond を評価し、条件が true になる最初の結果を返します。残りのすべての WHEN 句と else_result は評価されません。すべての条件が FALSE または NULL である場合、else_result が存在する場合はこれを返し、存在しない場合は NULL を返します。result および else_result 式は共通のスーパータイプに暗黙的に強制型変換できる必要があります。
COALESCE(expr1, ..., exprN) 任意の型 入力型のスーパータイプ 最初の非 NULL 式の値を返します。残りの式は評価されません。すべての入力式は共通のスーパータイプに暗黙的に強制型変換できる必要があります。
IF(cond, true_result, else_result) cond: BOOL true_resultelse_result: 任意の型 cond が true の場合は true_result を返し、それ以外の場合は else_result を返します。cond が true の場合、else_result は評価されません。true_result は、cond が false または NULL である場合には評価されません。true_resultelse_result は、共通のスーパータイプへの強制型変換が可能でなければなりません。
IFNULL(expr, null_result) 任意の型 任意の型または入力型のスーパータイプ NULLexpr である場合、null_result を返します。それ以外の場合は、expr を返します。exprNULL でない場合、null_result は評価されません。exprnull_result を共通のスーパータイプに暗黙的に強制型変換できる必要があります。COALESCE(expr, null_result) と同義。
NULLIF(expression, expression_to_match) 任意の型 T または T のサブタイプ 任意の型 T または T のサブタイプ NULL が true の場合は expression = expression_to_match を返し、それ以外の場合は expression を返します。expressionexpression_to_match を共通のスーパータイプに暗黙的に強制型変換できる必要があります。等価比較は、強制型変換された値に対して行われます。