読み方 : コウアレスかんすう

COALESCE関数【COALESCE function】

概要

COALESCE関数とはSQLにおいて複数の引数を左から順に評価し、最初に現れた非NULL値を返す関数。NULL(値が存在しない状態)を別の値に置き換える際に用いられ、SELECT文によるデータ取得や数値計算で用いられる。データの欠損や未入力を考慮した処理を実現できる。
COALESCE関数のイメージ画像

データベースのテーブルに値が格納されていない項目は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 DatabaseSQL ServerPostgreSQLMySQLなど主要なデータベース管理システムDBMS)の多くで共通して利用できる。同様の機能を持つ製品固有の関数として、Oracle Databaseの「NVL関数」やSQL Serverの「ISNULL関数」などがあるが、COALESCE関数は3つ以上の引数を扱える点や、特定の製品に依存しない標準的な記述である点で有利である。

(2026.6.22更新)
 
この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。