【PostgreSQLトレーニングはこちら】
お間違いでは? これは大変古いバージョンのマニュアルです。
より新しいバージョンのものはこちら [PostgreSQL日本語マニュアル]

4.10. 条件式

このセクションではPostgresで使用可能な SQLの条件式を説明しています。

Tip: これらの機能以上の条件式を必要とする場合は、 別のプログラミング言語を使ってストアドプロシージャを 記述することをお勧めします。

CASE

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

SQL CASE式は、一般的な条件表現で、 他の言語のif/else文と似ています。CASE句は、 表現が有効な場所であれば、どこでも使用することができます。 conditionboolean型を 返す式です。結果が真ならば、CASE式の値は resultとなります。偽の場合は、 その後にあるWHEN句を探します。WHEN conditionが偽の場合、 case式の値はELSE句のresult となります。

例:

=> SELECT * FROM test;
 a
---
 1
 2
 3

=> SELECT 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

result式のすべてのデータ型は 1つの出力型に強制されなければなりません。詳細は Section 5.5をご覧下さい。

CASE expression
    WHEN value THEN result
    [WHEN ...]
    [ELSE result]
END

この"simple" CASE式は 上記の通常のフォームの特別な変型です。expressionは 計算され、等しいものが見つかるまでWHEN句の すべてのvalueを比較します。 等しい値が見つからない場合、ELSE句の result、または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

COALESCE

COALESCE(value[, ...])

COALESCE関数はNULL以外の、最初の引数を 返します。これはディスプレーにデータが検索される際、 ディフォルト値をNULL値に置き換える時に使用できます。

SELECT COALESCE(description, short_description, '(none)') ...

NULLIF

NULLIF(value1, value2)

NULLIF関数はvalue1value2が等しい場合のみNULLを返します。 その他の場合はvalue1を返します。 上記のCOALESCEのように、逆演算を実行する際に 使用します。

SELECT NULLIF(value, '(none)') ...

Tip: COALESCE関数とNULLIF関数は CASE表現の簡略表記です。処理の早い段階でCASE 式に書き換えられ、その後の処理ではCASEを取り扱っていると 考えます。したがって、誤ったCOALESCE関数や、 NULLIF関数の使用は、CASEの エラーメッセージを表示させることがあります。


【PostgreSQL商用版パッケージ製品 PowerGresはこちら】
SRA OSS, Inc.のページに戻る