9.13.1. CASE

SQL CASE式は、他の言語におけるif/else文と同様に、一般的な条件式です。

CASE WHEN condition THEN result END

CASE 節は式が有効であればどこでも使用することができます。 もし結果が真であれば、CASE式の値は条件に続く結果となります。 もし結果がfalseであれば、それ以降のWHEN句は同じように検索されます。 WHEN条件が真でない場合、case式の値はELSE句の結果となります。 ELSE句が省略され、条件が一致しない場合、結果はnullです。

例:

SELECT * FROM test; a--- 1 2 3SELECT a, CASE WHEN a=1 THEN 'one' WHEN a=2 THEN 'two' ELSE 'other' END FROM test; a | case---+------- 1 | one 2 | two 3 | other

すべての結果式のデータ型は、単一の出力型に変換可能である必要があります。

次の “単純な “CASE式は、上記の一般的な形式の特殊化した変形です:

CASE expression WHEN value THEN result END

式は計算され、等しいものが見つかるまでWHEN句のすべての値指定と比較されます。 一致するものが見つからない場合、ELSE句の結果(またはNULL値)が返される。 これは、C言語のswitch文に似ています。

上記の例は、単純なCASE構文を使用して記述できます。

SELECT a, CASE a WHEN 1 THEN 'one' WHEN 2 THEN 'two' ELSE 'other' END FROM test; a | case---+------- 1 | one 2 | two 3 | other

CASE式は、結果を決定するために必要ない下位式は評価されません。 たとえば、これはゼロ除算の失敗を避けるために可能な方法です:

SELECT ... WHERE CASE WHEN x <> 0 THEN y/x > 1.5 ELSE false END;

コメントを残す

メールアドレスが公開されることはありません。