MySQLのNULL判定はどうやる? 除外判定やNULLのSUMを取得するには?
  • facebookページ
  • twitterページ
  • 2019.12.19

    MySQLのNULL判定はどうやる? 除外判定やNULLのSUMを取得するには?

    MySQLのNULLの扱いについて、サンプルSQLを紹介しながらまとめています。

    以下、データベースとして、MySQLのサンプルデータベースEmployeesを使っています。

    サンプルデータベースのインストール方法は、以下の記事を参考にしてください。

    【関連記事】
    MySQLの入門には、GUIツールで慣れ、サンプルDBを使った学習が効果的

    MySQLでNULL判定するサンプルSQL

    NULL判定はIS NULLを使う

    employeesデータベースの、titles(役職)テーブルを使って、NULL判定をおこなってみましょう。titlesテーブルのto_dateカラムは、NULLが許可されています。

    以下のSQLを実行し、NULLのカラムを持つデータをinsertします。

    以下のSQLで、to_dateカラムがNULLのレコードをselectできます。

    【関連記事】
    SQL isnullの使い方 NULL判定やNULL置換の方法 case式でも対応可能 

    ストアドプロシジャ、ストアドファンクション内のIF文でも、IS NULLを使ってNULL判定が可能です。

    【関連記事】
    SQL if文のサンプルコード集 NULL判定や、Switch文のような分岐をする方法 

    NULLの除外(否定)判定をするには、IS NOT NULL

    NULLの除外判定をするには、IS NOT NULLを使います。ただし、例外としてNOT INと組み合わせる場合は要注意。

    NOT IN (’Sales’, “Development’, NULL )と、NULLと他の値を同じように条件に指定すると、「何にもマッチしない」という結果になります。

    意図した動きをさせるには、以下のように他の条件とNULL関連の条件を分けて指定する必要があります。

    【関連記事】
    SQL not in データの除外指定 NULLや複数カラムを扱う方法 

    NULLの含まれるカラムの合計(SUM)を取得するには、COALESCE関数を使う

    対象のカラムにNULLが含まれている場合、group byでSUMを取得すると結果がNULLになるケースがあります。

    この現象を回避するためには、COALESCE関数を使います。COALESCE関数は、NULL値を別の値に置き換えることが可能。COALESCE(salary,0)は、カラムsararyがNULLの場合、NULLの代わりに0を取得します。

    以下のSQLは、salaries(年収)テーブルから、営業部(Sales)の年ごとの合計を取得するSQLです。

    salaryカラムにNULLが含まれている場合でも、正しく集計値を取得できます。

    実行結果はこうなります。

    SUM以外のグループ関数AVGや、MAX、MINなどでも同様です。

    【関連記事】
    SQL sumのサンプルコード集 基本の小計出力から、NULL対策まで

    まとめ

    ポテパンダの一言メモ
    • NULL判定をおこなうには、IS NULLを使う
    • NOT INでNULLを使う場合は、一般の式とNULLの判定文を分けて記述する
    • NULLの含まれるカラムのSUM、AVG、MAXなど集計値を取得する場合は、COALESCE関数を使う


    優良フリーランス案件多数掲載中!
    フリーランスエンジニアの案件をお探しなら
    ポテパンフリーランス

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE