標準 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 になる最初の結果を返します。残りのすべての 句と 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_resultcond が 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 のサブタイプ expression = expression_to_match が true の場合は NULL を返し、それ以外の場合は expression を返します。expressionexpression_to_match は共通のスーパータイプに暗黙的に強制型変換できる必要があります。等価比較は、強制型変換された値に対して行われます。