.NETエンジニア・プログラマ向けの技術情報・業界ニュースをお届けします。

  1. FEnet.NETナビ
  2. .NETコラム
  3. データベース
  4. SQL Server
  5. SQLのIS NOT NULLの使い方|IS NULLの使い方も解説

SQLのIS NOT NULLの使い方|IS NULLの使い方も解説

  • SQL Server
  • データベース
  • プログラミング言語
公開日時:   更新日時:
SQLのIS NOT NULLの使い方|IS NULLの使い方も解説
この記事でわかること
    基本情報技術者試験の試験対策はこちら>>
    システム
    エンジニア
    IS NOT NULLの使い方を覚えたいのですが、どのように実装すればいいですか?
    プロジェクト
    リーダー
    IS NOT NULL関数やIS NULLの利用法を説明します。利用環境についてもきちんと理解しておくと良いでしょう。

    関連記事:
    SQL ServerのDATETIMEとは?文字列からの変換や注意点も紹介
    SQL Serverの日付データ取得の関数6つ|文字列や数値で取得する方法も説明
    SQLServerのINSERT intoの使い方とは?列名を指定する・指定しないINSERT

    NULLの演算子と関数の違い

    IS NULL演算子は、NULLかどうかを判定する際に利用する演算子で、ISNULL関数は、NULLを指定の文字列に変換する関数です。使い方も非常にシンプルですし、SQL自体はどこの開発現場でも必ずと言っていいほど利用されている言語ですので、積極的に活用して早く自分のものにしましょう。

    SQLのIS NOT NULLの使い方3つ

    IS NULL演算子に対して「NULL値以外かどうかを判定する」にはIS NOT NULL演算子を使用します。

    IS NOT NULLのような否定系のSQL(NOTを使った条件を使ったSQL)はインデックスが使用されないため、テーブルがフルスキャンされることもあり、処理速度悪化の恐れからSELECT文ではあまり使用しません。

    SQLの「IS NOT NULL」の使い方について3つ紹介します。

    1:IS NOT NULLを記述するための準備

    IS NOT NULLの使い方1つ目はIS NOT NULLを記述するための準備についてです。

    IS NOT NULLなど否定系のSQL(NOTを使った条件を使ったSQL)はインデックスが使用されないため、テーブルがフルスキャンされることもあり、処理速度悪化の恐れからSELECT文ではあまり使用しません。

    但し、条件に一致するレコードが(全体の数%程度の)少ない場合、フルスキャンする方が早くなるため「IS NOT NULL」を使用します。

    予め、対象テーブルに条件(NULL)に一致するレコードが全体に占める割合を調査し、(全体の数%程度の)少ない場合、IS NOT NULL演算子を使用します。条件(NULL)に一致するレコードが全体に占める割合が多い場合、NULL以外の値を条件に指定する記述にします。

    NULLのカラムに値を設定

    SHAIN_ID SHAIN_NAME BUSHO_CD
    S001 社員 A一 B001
    S002 社員 B二 NULL
    S003 社員 C三 NULL

    NULLのカラムに値を設定する方法についてです。

    SQL ServerでNULLのカラムに値を設定する場合は「IS NULL関数」を使用します。(SQL Server以外でのISNULL関数に代わる記述方法については後述します。)

    下記にサンプルを示します。上記テーブル情報をもとに、NULLの項目を指定の文字列に置換して取得します。

    上記のSQLを実行した結果です。

    NULLが「配属未定」に変換されています。ISNULL関数により値を変換してデータを取得する際には、AS句で項目に別名をつけるようにします。別名をつけていない場合「(列名なし)」となってしまい、不具合の原因となる恐れもあります。

    2:NULLが許容している列をNULLを許容せずに設定変更するサンプル

    IS NOT NULLの使い方2つ目はNULLを許容する列からNULLを許容しない列に設定を変更する方法についてです。NULLを許容する列からNULLを許容しない列に設定を変更する場合のサンプルを下記に示します。

    3:カラム値がすべてnullになっている場合のサンプル

    IS NOT NULLの使い方3つ目はカラムの値がすべてnullになっている場合にNULLを許容しないカラムに設定を変更する方法についてです。

    カラム値がすべてnullになっている場合のサンプルを下記に記します。対象のカラム(COLUMN01, COLUMN02)に0を埋めた後、設定をNOT NULLに変更します。

    SQLのIS NULLの使い方

    ここでは、主にWhere条件で利用することが多くなるNULLかどうかを判定するために利用する演算子と、SQLのIS NULLの使い方を説明しますので、ぜひ参考にしてみてください。

    IS NULL演算子の使い方

    IS NULL演算子とは、NULLかどうかを判定するために利用する演算子です。主にWhere条件で利用することが多くなるかと思います。

    アプリケーション開発の現場で、テーブルにNULLのデータが含まれているかの確認はよくあることです。もちろん、NULL以外のデータの確認もあるでしょう。IS NULL演算子はNULLが利用できるデータベースでは基本的な使い方ですので、早めに使い方はマスターしておきましょう。

    使い方は非常に簡単です。まずはNULLのデータを取得する方法を解説します。
    上記テーブル情報をもとに検索します。

    ID KU MACHI
    1 渋谷区 桜丘町
    2 港区 NULL
    3 世田谷区 NULL
    取得結果
    上記のSQLを実行した結果です。

    次にNULL以外のデータを取得するSQL文です。
    取得結果
    上記のSQLを実行した結果です。

    使い方はとてもシンプルだということを確認できたかと思います。他の条件と組み合わせて早速使ってみましょう。

    IS NULL関数の使い方

    データベースではNULLが許容されていても、アプリケーションサイドではNULLのためにシステム障害が発生することはよくあります。このようなエラーを起こさないよう、データベースサイドでISNULL関数を利用して、NULLを指定の文字列に置き換える処理を実装することも、SQLプログラミングのひとつです。

    こちらも使い方は非常に簡単です。
    先ほどと同じテーブル情報をもとに、NULLの項目を指定の文字列に置換しましょう。

    ID KU MACHI
    1 渋谷区 桜丘町
    2 港区 NULL
    3 世田谷区 NULL
    取得結果
    上記のSQLを実行した結果です。

    NULLが’置換’に変換されています。
    ISNULL関数を使用してデータを取得する際には、AS句で項目に名前をつけましょう。つけていなかったら「(列名なし)」となってしまい、不具合の原因になる恐れもあります。

    SQL環境以外のIS NULLに代わる記述方法3つ


    SQL Server 以外のDB環境で「IS NULL関数」に代わる記述方法を3つ紹介します。

    値がNULLかどうかを判定する「IF NULL演算子」はOracle・DB2・MySQL・PostgreSQL・Accessなどといった多くの環境で使用可能です。

    1:Mysql・SQLiteの場合

    Mysql・SQLiteの場合、「IS NULL関数」に代わる記述方法として「IFNULL関数」を使用します。

    「IFNULL関数」を使用したサンプルを下記に示します。

    テーブル情報からカラム「SHAIN_ID」「SHAIN_NAME」「BUSHO_CD(NULLの場合、’配属未定’に置換)」を取得します。

    「IFNULL関数」の代わりに「COALESCE関数」を使うこともできます。
    「COALESCE関数」は引数の1番目からn-1番目の値の中で最初にNULLでない値を返します。

    「COALESCE関数」を使用したサンプルを下記に示します。

    2:Oracleの場合

    Oracleの場合、「IS NULL関数」に代わる記述方法として「NVL関数」を使用します。

    「NVL関数」を使用したサンプルを下記に示します。

    テーブル情報からカラム「SHAIN_ID」「SHAIN_NAME」「BUSHO_CD(NULLの場合、’配属未定’に置換)」を取得します。

    3:PostgreSQLの場合

    PostgreSQLの場合、「IS NULL関数」に代わる記述方法として「COALESCE関数」を使用します。

    「COALESCE関数」を使用したサンプルを下記に示します。

    テーブル情報からカラム「SHAIN_ID」「SHAIN_NAME」「BUSHO_CD(NULLの場合、’配属未定’に置換)」を取得します。

    システム
    エンジニア
    IS NULL演算子とIS NULL関数の2通りのパターンがあるのですね。IS NOT NULLとIS NULL関数は知識不足でした。ここで確認できて良かったです。
    プロジェクト
    リーダー
    NULLを許容しているデータベースでは、IS NOT NULLやIS NULL演算子、IS NULL関数ともに利用することが多くなります。開発現場では、両方ともよく利用する命令ですので、早めに理解しておきましょう。

    SQLのIS NULL・IS NOT NULLの使い方を覚えよう

    IS NULL演算子は「NULLかどうかを判定する際に使用する演算子」で、ISNULL関数は「NULLを指定の文字列に変換する関数」です。似ていますが、役割は異なります。

    またIS NOT NULL演算子はIS NULL演算子と逆に「NULL以外を探す際に使用する演算子」ですので、こちらも合わせてしっかり覚えておきましょう。

    SQL自体はどこの開発現場でも必ずと言っていいほど利用されている言語です。積極的に活用し、早く自分のものにしていくことが大切です。

    FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
    株式会社オープンアップシステムロゴ

    株式会社オープンアップシステムはこんな会社です

    秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
    数多くのエンジニアが集まります。

    秋葉原オフィスイメージ
    • スマホアプリから業務系システムまで

      スマホアプリから業務系システムまで

      スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。

    • 充実した研修制度

      充実した研修制度

      毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。

    • 資格取得を応援

      資格取得を応援

      スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。

    • 東証プライム上場企業グループ

      東証プライム上場企業グループ

      オープンアップシステムは東証プライム上場「株式会社夢真ビーネックスグループ」のグループ企業です。

      安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。

    株式会社オープンアップシステムに興味を持った方へ

    株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。

    年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
    まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。

    株式会社オープンアップシステムへのご応募はこちら↓
    株式会社オープンアップシステムへのご応募はこちら↓

    新着案件New Job