こんにちは突然ですが
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の置き換え処理をすることがあったらぜひ一度使ってみてください
読んでいただきありがとうございました!