データベースを扱う上で、「NULL値」は避けて通れない存在です。特に、NULLが含まれると計算やデータ処理に思わぬ影響を与えることがあります。例えば、NULLを含むデータをそのまま表示すると、意図しない空白が発生したり、数値計算でエラーになったりすることもあります。
そこで便利なのが、PostgreSQLのCOALESCE関数です!COALESCEを使えば、NULL値を任意のデフォルト値に置き換えたり、複数のカラムの中から最初に存在する値を取得したりすることができます。
この記事では、COALESCE関数の基本から実践的な使い方まで詳しく解説していきます。これをマスターすれば、NULLの扱いに悩まされることなく、より柔軟なSQLを書けるようになるはずです。
それでは、さっそくCOALESCE関数の使い方を見ていきましょう!
COALESCE関数の基本
COALESCE関数は、引数として複数の値を受け取り、最初にNULLでない値を返す関数です。もしすべての引数がNULLであれば、結果もNULLになります。
この関数を使うことで、NULL値を適切なデフォルト値に置き換えることができ、データの欠損による問題を回避できます。
COALESCE関数の基本的な構文は以下の通りです。
COALESCE(value1, value2, ..., valueN)
この構文では、左から順番に評価され、最初にNULLでない値が返されます。
使用例
例えば、NULL値が含まれるデータに対して、デフォルト値を設定する場合を考えてみましょう。
SELECT COALESCE(NULL, 'デフォルト値');
このSQLのNULL値が含まれているデータに対しての結果は、引数に設定した「デフォルト値」が返されます。
NULLIFとの違い
COALESCEとよく比較される関数にNULLIFがあります。これらの違いを理解しておくことも重要です。
- COALESCE: NULLを別の値に置き換える
- NULLIF: 指定した値と一致した場合にNULLを返す
例えば、以下のSQLを実行すると、10と10が一致するためNULLが返されます。
SELECT NULLIF(10, 10);
一方、COALESCEでは次のように処理されます。
SELECT COALESCE(NULL, 10, 20);
この場合、最初のNULLは無視され、次にある10が返されます。
COALESCE関数の実用例
COALESCE関数の基本的な使い方を理解したところで、実際のデータ操作でどのように活用できるのか、具体的なケースを見ていきましょう。
デフォルト値を設定する(NULL値を別の値に置き換える)
例えば、ユーザー名がNULLのときに「ゲスト」と表示させる場合、COALESCEを使うことで簡単に実装できます。
SELECT username, COALESCE(username, 'ゲスト') AS display_name FROM users;
結果

NULL値があるとそのままでは「空白」となりますが、COALESCEを使えば「ゲスト」というデフォルト値に置き換えることができます。
複数のカラムから最初の非NULL値を取得する
例えば、顧客テーブルに「メールアドレス」と「電話番号」のカラムがあり、どちらかの情報が必ず入っているとします。この場合、COALESCEを使うと、最初に存在する値を取得できます。
SELECT customer_name, COALESCE(email, phone, '連絡先なし') AS contact_info FROM customers;
結果

このSQLでは、
- メールアドレス(email)があれば、それを使用
- なければ電話番号(phone)を使用
- どちらもなければ「連絡先なし」と表示
という処理をシンプルに実装できます。
集計時にNULLを回避する(合計・平均計算)
数値データを扱う際にNULLが含まれていると、SUMやAVGといった集計関数の計算結果に影響を与えることがあります。
例えば、商品テーブルに価格(price)のカラムがあり、一部のデータがNULLになっている場合、COALESCEを使ってNULLを0に置き換えた上で集計できます。
商品テーブル

SELECT SUM(COALESCE(price, 0)) AS total_price FROM products;
この処理を入れることで、NULLが含まれているテーブルの場合でも安全に合計を計算できます。
通常のSUM(price)では
→ 結果:1000 + 500 = 1500(NULLは無視される)
COALESCEを使うと
→ 結果:1000 + 0 + 500 = 1500(NULLを0として扱う)
AVG(平均)計算でも同様に、NULLを0に置き換えて計算することで、より正確な結果を得ることができます。
まとめ
この記事では、PostgreSQLのCOALESCE関数について詳しく解説しました。COALESCEを活用することで、NULL値を適切に処理し、より柔軟なデータ操作が可能になります。
✅ COALESCE関数のポイント
- NULLを特定の値に置き換えることで、データの欠損による問題を回避できる
- 複数のカラムから最初の非NULL値を取得し、適切なデフォルト値を設定できる
- 集計時にNULLを回避し、安全にSUMやAVGなどの計算を行える
COALESCEは、データベースを運用する上で非常に便利な関数です。NULLによる不具合や計算ミスを防ぎ、より堅牢なSQLクエリを書くために、ぜひ活用してください!
今後もPostgreSQLの便利な関数やテクニックを紹介していくので、興味がある方はぜひチェックしてみてください!
コメント