【SQL】COALESCE関数とは?意味や使い方をわかりやすく解説!

今回はSQLにおいてNULLを別の値に置き換えてくれるCOALESCE関数(コウアレス関数)について解説していきたいと思う。

スポンサーリンク

COALESCE関数とは

COALESCE関数は指定したカラムがNULLだった場合に、NULL値を指定した別の値に置き換えてくれる関数だ。

ちなみに読み方がわからない人も多いと思うが(私がそうだった)、コウアレスもしくはコーレスと読む。

例えば、下記のような一部値が入っていない=NULLがあるデータがあるとする。

COALESCE①

上記データでNULL値があるquanityカラムに対して、COALESCE関数を使用してNULL値を0に置き換えたクエリとその結果が下記となる。

COALESCE②

NULL値の部分だけがCOALESCE関数で指定した値(今回は0)に置き換わっていることがお分かりいただけると思う。

このようにCOALESCE関数はNULL値を指定した値に置換してくれるのだ。

また、COALESCE関数では下記のように引数として複数のカラムを指定することも出来る。

その場合は、指定したカラムを左から順にチェックしていき、下記のような処理をしてくれる。

  1. カラム①の値がNULLでなければ、カラム①の値をそのまま表示させる
  2. カラム①の値がNULLだったら、カラム②の値を表示させる。
  3. カラム②の値もNULLだったら、デフォルト値を表示させる。

例えば、下記のcustomerテーブルがあるとする。

COALESCE③

このテーブルを

「name1カラムとname2カラムを1つのカラムにまとめてしまいたい!」

という時に、COALESCE関数を使用すれば下記のように1つのカラムにまとめることが可能だ。

COALESCE③

  • id=3ではname1カラムには値がなかったが、name2に値があったので、name2の値が表示されている
  • id=5ではname1,name2のカラムどちらもNULLだったため、COALESCE関数で指定したデフォルト値が表示されている
  • それ以外のデータはname1に値が入っていたので、name1の値が表示されている

このようにCOALESCE関数はNULLを別の値に置き換えるだけでなく、複数のカラムを統合(マージ)するような機能も持っている関数だ。

私自身は2つのテーブルをFULL JOINする際に、共通するカラムをマージするためにこのCOALESCE関数をよく使う。

COALESCEを訳すと「合体する、融合する」という意味だから、複数のカラムを合体させる機能を持つというのは理解しやすいかもしれない。

スポンサーリンク

COALESCE関数の使い方

COALESCE関数の使い方は下記だ。

①引数として何個でもカラムを指定することができる、②デフォルト値は省略可能、という2点を覚えておくと良いと思う。

COALESCE④

これだけだと、「どういうこと?」と思う人も多いと思うが、先ほどの具体例に当てはめてみると理解しやすくなるはずだ。

COALESCE⑥

COALESCE関数の使い方をしっかり把握したい人は是非サンプルデータでいいので試してみて、結果のデータを確認してみて欲しい。

実際に試してみれば、「COALESCE関数の使い方を把握するのはそこまで難しくないはずだ。

まとめ

今回はCOALESCE関数を紹介した。

  • COALESCE関数はNULL値を他の値に置き換える関数
  • 読み方は「コウアレス」または「コーレス」
  • 複数カラムを指定することで、優先順位に応じてカラムを統合(マージ)するような処理も可能。
  • FULL JOIN後の共通カラムの統合など、実務でも非常によく使われる
  • 引数は何個でもOK、デフォルト値も設定できるので応用範囲が広い。

NULL値を別の値に置き換えたい時や複数のカラムを統合したい時にとても便利な関数だ。

名前がやや難しいから避けがちな関数なのだが(私だけかもしれない(笑))、一度覚えてしまえば役に立つ関数なので是非この記事を参考に習得してもらえると嬉しい。

BigQuery関数一覧

おすすめの記事