MENU

【PostgreSQL入門】COALESCE関数の使い方と実例解説

データベースを扱っていると、必ずと言っていいほど直面するのが NULL値の扱い です。
PostgreSQLでは、このNULLを柔軟に処理できる便利な関数として COALESCE関数 が用意されています。

COALESCEは「最初にNULLでない値を返す」関数で、データ整形やレポート作成に欠かせない存在です。

読み方は「コウアレス」もしくは、「コアレス」です。わたしは何度見ても読み方忘れてしまいます。

目次

COALESCE関数の基本構文

COALESCE(value1, value2, ..., valueN)

引数を左から順に評価し、最初にNULLでない値を返します。

すべての値がNULLであれば、結果もNULLになります。

実際には引数が2つで使用されるケースがほとんどです。使用例①を見てみましょう。

使用例①:NULLをデフォルト値に置き換える

たとえば顧客テーブルで住所がNULLの場合、「不明」と表示したい場合は以下のように書けます。

SELECT COALESCE(address, '不明') AS address_info
FROM customers;

このクエリでは、addressがNULLなら「不明」が返り、それ以外は元の住所が表示されます。

使用例②:複数列の優先順位をつけて値を取得する

顧客連絡先として、電話番号→メールアドレス→住所の順で優先して表示したい場合は次のように記述できます。

SELECT COALESCE(phone, email, address) AS contact_info
FROM customers;

左から順に評価されるため、電話番号がNULLでなければそれを返し、NULLなら次の候補をチェックしていきます。

実践例:売上データのNULL処理

売上データで「割引額」がNULLの場合、0として扱いたいケースを考えます。

SELECT product_name,
       price - COALESCE(discount, 0) AS final_price
FROM sales;

このように、COALESCEを使うことで売上計算をスムーズに行えます。

COALESCEと似た関数(NVL, ISNULL)との違い

  • NVL:Oracleで使用される同様の関数。PostgreSQLには存在しません。
  • ISNULL:SQL Serverでよく使われる関数。2引数しか扱えないのに対し、COALESCEは複数引数を評価できます。

つまり、PostgreSQLでの標準的な方法は COALESCE一択 と覚えておくと良いでしょう。

注意点とパフォーマンスの観点

  • 引数のデータ型はすべて揃えるのが基本です(異なる型だと暗黙的な型変換が発生します)。
  • 大量データを処理する場合、複雑なCOALESCEはパフォーマンスに影響する可能性があります。

まとめ

  • COALESCEは最初のNULLでない値を返す関数
  • NULLをデフォルト値に置き換えたり、複数列から優先順位をつけて値を取得できる。
  • 他のDB関数との違いを理解すると、移植性の高いSQLを書ける。

PostgreSQLを使うなら必須の関数なので、ぜひ積極的に活用してみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

・20代
・IT未経験からSIerに就職、開発とプロジェクト管理を経験
・働いている中で会計に興味を持ち、ERPの会計領域を挑戦中
・筋トレ最高!
保有資格:日商簿記1級/応用情報/ITストラテジスト

コメント

コメントする

目次