PR

【SQL】COALESCE関数の意味と使い方をわかりやすく1分で解説

Database

COALESCE関数は、データベースのSQLで使われる関数の1つで、引数のリストから最初のNULLでない値を返す関数です。つまり、複数の値の中から最初の非NULLの値を取得する際に使用します。

COALESCE(引数1, 引数2, ... 引数N)

参考 SQLとは?(初心者向け解説)

日本語で発音すると「コアレス」と近い読み方になります。

このページでは、COALESCE関数の意味と使い方(コツ)を初心者向けにわかりやすく1分でご説明します。

このページで学べる内容
  • COALESCE関数の構文ルール/使い方
  • COALESCE関数の使いどころとコツ

プログラマーやシステムエンジニアを目指す方であれば知らないと恥ずかしい基本知識です。是非最後までご覧ください。

参考 【初心者向け】SQLの基本構文ルール

スポンサーリンク

COALESCE関数

COALESCEはSQLの関数で、複数の引数を取り、その引数の中から最初のNULLでない値を返す関数です。

COALESCE(引数1, 引数2, ... 引数N)
  1. 返されるのは最初のNULLでない値: 引数のリストを左から右へと順番に評価し、最初に出現するNULLでない値がその結果として返されます。
  2. 全ての引数がNULLの場合、結果もNULL: COALESCE関数に与えられた全ての引数がNULLの場合、関数の結果もNULLとなります。

サンプルコード employees テーブルの例

employees テーブルが以下のデータを持っていると仮定します。

idfirst_namephone_homephone_work
1JohnNULL03-1234-5678
2Jane050-1234-5678NULL
employees テーブル

このテーブルから社員の電話番号を取得したい場合を考えてみます。自宅の電話番号がない場合は、仕事の電話番号を取得したいとします。

この場合のSQLクエリは次のようになります。

SELECT first_name, COALESCE(phone_home, phone_work) AS phone_number FROM employees;

このクエリの結果、Johnの自宅の電話番号がNULLなので、仕事の電話番号がphone_numberとして取得されます。一方、Janeの場合は自宅の電話番号が存在するので、その値がphone_numberとして取得されます。

このように、COALESCE関数は特定の条件下でのデータのフォールバック値を設定する際に非常に役立ちます。

COALESCE関数の使いどころ/よくある利用方法

CASE1 デフォルト値の設定

あるカラムがNULLの場合にデフォルト値を設定したい場合に利用します。(例: 商品の価格が設定されていない場合に0を表示する。)

SELECT product_name, COALESCE(price, 0) AS price FROM products;

SUM関数AVG関数はNULL値を除外して計算しますが、NULLは「0」として計算したいような場合に用いられます。

SELECT AVG(COALESCE(score, 0)) AS average_score_with_nulls FROM students;

-- COALESCE関数は、最初の非NULL値を返します。
-- 上記の例では、scoreがNULLの場合は0を返します。
-- したがって、このSQL文はNULL値を0として平均スコアの計算に含めます。

CASE2 複数のカラムからのフォールバック

1つのカラムがNULLの場合、別のカラムの値を使用する、というようなシナリオで利用します。(例: 自宅の電話番号がない場合、携帯の電話番号を表示する。)

SELECT name, COALESCE(home_phone, mobile_phone) AS contact_number FROM contacts;

CASE3 日付の範囲での最小・最大値取得

複数の日付のカラムがあり、最も古い日付や最も新しい日付を取得したい場合に、NULL値を考慮しつつ利用することができます。(例: 製品の製造日と入荷日のうち、最も新しい日付を取得する。)

SELECT product_name, COALESCE(manufactured_date, arrival_date) AS recent_date FROM products;

CASE4 外部結合の結果の扱い

OUTER JOINを使用すると、一致する行が存在しない場合にNULLが返されることがあります。このNULLの結果を適切な値に置き換える際にCOALESCEが役立ちます。(例: 注文情報と支払情報を結合し、支払いがまだされていない場合に0を表示する。)

SELECT orders.order_id, COALESCE(payments.amount, 0) AS payment_amount FROM orders
LEFT JOIN payments ON orders.order_id = payments.order_id;

以上のようなシチュエーションで、COALESCE関数はデータのNULL値を適切に扱い、より意味のある値やデフォルト値に置き換えるために役立ちます。

SQL:COALESCE関数のまとめ

  • COALESCEはSQLの関数で、複数の引数から最初のNULLでない値を返す
  • 複数のカラムや値からデフォルト値やフォールバック値を設定する際に利用される。
  • 引数の中で全ての値がNULLの場合、COALESCE関数自体もNULLを返す
  • データのNULL値を適切に管理し、意味のある値やデフォルト値に変換するための便利なツール。

サンプル

idfirst_namelast_nameemailphone
1TaroYamadataro@example.comNULL
2HanakoSuzukiNULL090-1111-2222
3YukiTanakayuki@example.com080-3333-4444
SELECT first_name, last_name, COALESCE(email, phone) AS contact_method FROM users;
first_namelast_namecontact_method
TaroYamadataro@example.com
HanakoSuzuki090-1111-2222
YukiTanakayuki@example.com

SQLやデータベースの仕組みを1から学習したい方(学び直したい方)向けに、現役エンジニア達のスキルを結集して 完全無料 のSQL教材を作成しました。

SQLは決して難しい技術ではないので、エンジニアであれば「当たり前のように」扱えて当然かも・・・?

とはいえ、案外SQLをちゃんと使ったことがない人も多いはずです。この機会に是非一度ご覧になってみてください。

このWebサイトは現役のエンジニアが以下3点を目的として運営しています。

  1. 勉強:一度理解した内容を忘れないように。
    → アウトプットは「最強のインプット」である! 
  2. 備忘:忘れたとしても後から見返せるように。
    → 未来の自分への「お手紙」を書いています。 
  3. 共有:〇〇ってこうだったんだ!の感動をシェアできるように。
    → あなたの知識は誰かにとっての「価値ある情報」です。 

副業ブログの始め方はこちらから

スポンサーリンク
DatabaseIT-Skills
シェアする
ビズドットオンラインをフォローする
タイトルとURLをコピーしました