お疲れ様です。
はるさらと申します。
今回はOracleに関する
備忘録記事となります。
タイトルにも記載していますが
OracleのCOUNT関数にて
列名を指定すると
NULLの件数が集計されません。
NULLの件数も集計したい場合の
対策・解決方法を記載していこうと思います。
例)COUNT関数でNULLが集計されない
下記の様に
select文でTBLを表示してみると
ADDRESSの項目がNULLであるレコードが
2件存在していることがわかります。
![](https://harusara22.work/wp-content/uploads/2023/05/01-1.png)
ですが、COUNT関数を使用してみると
NULLの件数が0件という結果が
返ってきています。
![](https://harusara22.work/wp-content/uploads/2023/05/02.png)
列名を指定しつつ
NULLも集計したい場合は
以下の関数で対応が可能です。
NVL関数を使用してNULLを集計する方法
OracleのCOUNT関数使用時に
列名を指定しながら
NULLの件数も集計したい場合は
「NVL関数」を使用しましょう。
先ほど記載したTBLで
NVL関数を使用してみると
下記の様な結果が返ってきます。
![](https://harusara22.work/wp-content/uploads/2023/05/03-1.png)
しっかりとNULLの件数も
集計してくれていることが分かります!!
NVL関数の構文
NVL関数の構文は下記となります。
select count(NVL(列名,0)) from テーブル名;
普段実行しているCOUNT関数の中に
NVL関数を設定しているだけのため
そこまで難易度の高い関数ではありません。
NVL(列名,0)
列名の個所には集計したいカラム名を。
第二引数には“置き換える値”を設定してあげることで
COUNT関数を発行したタイミングだけ
NULLを0に置き換えて、
集計できるようにしてくれています。
まとめ
OracleでCOUNT関数を使う際に
列名を指定してNULLの数も集計したい場合は
『NVL関数』を使用してください。
どなたかの役に立てば幸いです。
それではまたー!
リンク