DBからデータを抽出する際にnullの値を別の値に置き換えてデータの一覧を生成したい時があるかと思います。エンジニア以外にデータを渡すときはnullだ処理しにくく、”データなし”とか”0”とかに置き換えたほうが良い時もあります。
今までスプレッドシートで変換していたのですが、SQLで取得する時にできたので、紹介です。
ifnullを使って任意の文字列に置き換える
select ifnull(カラム名, 置き換える文字列) from ***;
これでnullの場合任意の文字列に置き換えることができます。
使い方の紹介
例えば以下のようにテストの結果が入っているテーブルがあったとします。欠席の場合、nullになるシステムからデータを抽出して、欠席者は0点として、エクセルで集計したくなったと想定します。
テーブルのデータ
id | name | score |
1 | 山田 | 70 |
2 | 田中 | null |
3 | 伊藤 | 90 |
4 | 大野 | 100 |
select name, ifnull(score, 0) from test_score;
出力データ
id | name | score |
1 | 山田 | 70 |
2 | 田中 | 0 |
3 | 伊藤 | 90 |
4 | 大野 | 100 |
役立ちそうな場面
left joinして別テーブルのデータがない場合に処理したいといった場面で、出番が増えそうな気がします。
これを使うことで、スプレッドシートで毎回変換していた手間がなくなると思うと、使い道はありそうだなと感じています。