本節ではPostgreSQLで使用可能なSQL準拠の条件式について説明します。ヒントここで説明する条件式より発展した機能を求める場合は、より表現の豊富なプログラム言語でストアドプロシージャを記述することで解決されます。CASESQLのCASE式は他のプログラミング言語のif/else構文に類似した汎用条件式です。result]ENDCASE句は式が有効な位置であればどこでも使用可能です。それぞれのconditionとはboolean型の結果を返す式です。conditionの結果が真であれば、CASE式の値は、conditionに続くresultとなります。CASE式の残りは処理されません。conditionの結果が偽であれば後に続く全てのWHEN句が同じようにして調べられます。WHENのconditionの1つも真でない場合、CASE式の値はELSE句のresultになります。ELSE句が省略され、どのconditionも真でない場合、結果はNULLです。other全てのresult式のデータ型は単一の出力型に変換可能でなければなりません。UNION、CASEおよび関連する構文を参照してください。以下のように、上記の一般的な形式と異なるCASE式の「単純な」形式が存在します。result]END最初のexpressionが計算され、そしてそれに等しいものが見つかるまでWHEN句のそれぞれのvalue式と比較されます。等しいものが見つからない場合、ELSE句のresult(もしくはNULL値)が返されます。これはC言語のswitch文に似ています。上の例は簡略形CASE構文を使って次のように書くことができます。otherCASE式は、結果を決定するために不必要などんな副式をも評価しません。以下は0除算エラーを防ぐための方法です。式の評価規則で説明したとおり、式の副式が異なる時点で評価される様々な状況があります。そのため「CASEは必要な副式のみを評価する」という原則は厳格なものではありません。定数1/0副式は、実行時には決して入らないCASE節の中にあったとしても、通常は計画時にゼロによる除算での失敗という結果に終わります。...])COALESCE関数は、NULLでない自身の最初の引数を返します。全ての引数がNULLの場合にのみNULLが返されます。データを表示目的で取り出す際、NULL値をデフォルト値で置き換えるためによく使用されています。...これはdescriptionがNULLでなければそれを返します。ない場合(NULLの場合)は、short_descriptionがNULLでなければそれを返します。それ以外の場合(short_descriptionもNULLの場合)は(none)が返ります。CASE式同様、COALESCEは結果を決定するために必要な引数のみを評価します。非NULL引数が見つかれば、その右側にある引数は評価されません。このSQL標準関数は、他のいくつかのデータベースで使用されているNVLおよびIFNULLと類似の機能を提供します。value2)NULLIF関数は、value1がvalue2と等しい場合、NULL値を返します。その他の場合はvalue1を返します。...この例では、value1が(none)ならばNULLが返ります。...])GREATESTとLEAST関数は任意の数の式のリストから最大値もしくは最小値を選択します。UNION、CASEおよび関連する構文を参照してください)。リストの中のNULL値は無視されます。全ての式がNULLと評価された場合に限って結果はNULLになります。GREATESTおよびLEASTはSQL標準に載っていませんが、共通した拡張です。他のいくつかのデータベースでは、全てがNULLの場合に限定せず、いずれかの引数がNULLである場合にNULLを返すようにしているものもあります。