7
2

【SQL】COALESCE関数のすゝめ

Posted at

こんにちは突然ですが
CULUMN_01の値を取得、NULLだったら0として処理をしてください
みなさんならどのように書きますか?

僕はCASE文を使ってこのように書いてました

SELECT
    CASE
        WHEN COLUMN_01 IS NULL THEN 0
        ELSE COLUMN_01
    END AS RESULT
;

これを見てもらったところCOALESCE関数で書いたらどうかと教えてもらい1行で書けるようになりました

SELECT
    COALESCE(COLUMN_01, 0) AS RESULT
;

COALESCE関数とは?

参照するカラムがNULLだったら置き換えてくれる関数です
参照するカラムは複数指定できます
COLUMN_01を取得、もしNULLだったらCOLUMN_02を取得、これもNULLだったらCOLUMN_03を取得、それでもNULLだったら指定した結果を表示させるといったことができます
以下のように参照するカラムがすべてnullだったら0を表示するクエリを作成するとこのようになります
COALESCE(COLUMN_01,COLUMN_02,COLUMN_03,0) AS RESULT

元データ

COLUMN_01 COLUMN_02 COLUMN_03
3 4 5
null 1 3
null null 7
null null null

結果

RESULT
3
1
7
0

さいごに

先ほどの例ですが一番初めに僕がやっていたようにCASE文を使って書くこともできます
COALESCEで書くメリットは
  • 行数、文字数が少なくて済む
  • クエリを見直すときにCOALESCEが見えた時点でNULLだったら別のもので置き換える処理だとわかりやすくなる

この2つかなと思ってます
NULLの置き換え処理をすることがあったらぜひ一度使ってみてください

読んでいただきありがとうございました!

7
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
2