COALESCE関数【COALESCE function】
概要

データベースのテーブルに値が格納されていない項目はNULLとなるが、画面表示や計算処理にNULLが混在すると、エラーや意図しない結果を招くことがある。COALESCE関数はこうした事態を避け、適切な代替値を取り出すために用いられる。例えば、「COALESCE(A, B, C)」と記述すると、AがNULLでなければその値を返し、AがNULLであればBを、BもNULLであればCを評価する。
引数には列名だけでなく計算式を指定することも可能であり、「COALESCE(A*20, B/20, C+20)」のように各引数に演算を加えた上で非NULL値を判定させることができる。また、「X - COALESCE(Y, 0)」のように、COALESCE関数の戻り値を他の値とさらに計算することもできる。この場合、YがNULLであれば0として扱われるため、計算式全体がNULLになることを防げる。
指定したすべての引数がNULLであった場合、COALESCE関数自体の戻り値もNULLとなる。判定対象のいずれにも非NULL値が存在しないためである。計算結果や表示結果を必ず具体的な値にしたい場合には、「COALESCE(A, B, C, 1)」のように引数の末尾に固定のデフォルト値を記述しておくなどの対応が必要となる。
評価は左から右へ進み、最初に非NULL値が見つかった時点で結果が確定するため、多くの実装では以降の引数の評価を省略する。COALESCE関数はSQL標準で定義されている関数であり、Oracle DatabaseやSQL Server、PostgreSQL、MySQLなど主要なデータベース管理システム(DBMS)の多くで共通して利用できる。同様の機能を持つ製品固有の関数として、Oracle Databaseの「NVL関数」やSQL Serverの「ISNULL関数」などがあるが、COALESCE関数は3つ以上の引数を扱える点や、特定の製品に依存しない標準的な記述である点で有利である。