【SQL】NULL≠空文字を理解する。UPDATEでNULLを扱う場合について解説。
  • facebookページ
  • twitterページ
  • 2020.06.26

    【SQL】NULL≠空文字を理解する。UPDATEでNULLを扱う場合について解説。

    データベースでデータの追加・変更を行う際にNULLは他とは違う特殊な動作となります。

    空文字 = NULLと思っていると意外な場所で嵌ってしまうこともあるので注意が必要です。

    そこで今回は「SQLでUPDATEを行う際のNULLの扱い」について解説をしてみたいと思います。

    NULLと空文字は別モノ

    まずはNULLについて簡単に説明します。

    NULLは「ヌル」もしくは「ナル」と読みます。

    SQLにおいてのNULLは、レコードに何も入っていない状態を指します。

    初心者の方は空文字をNULLと思っている方も多く見られますが、空文字とは違うため混同しないようにしてください。

    例えば次のようなデータベーステーブルがあったとします。

    このテーブルでは、”checkup_date”には「NULL値」が入っています。

    このテーブルで試しに「空文字」を検索してみましょう。クエリは分かりやすいように「SELECT checkup_date FROM sample_table_B WHERE checkup_date = ”」とします。

    すると次のような結果となりました。

    実行してもnullはHITしません。

    この理由として、空文字はデータベース上では「空文字という文字列が存在する」というカタチで扱われます。

    よって、NULL値という「何も存在しない」値とは別のモノとして扱われているわけです。

    これでNULL値と空文字の違いについてはお分かりいただけたと思います。

    UPDATEでnullを扱う

    ここまでの説明でnullに関する予備知識は一通りご理解いただけたと思いますので、ここからはnullをUPDATEでどのように扱うかについて解説してみたいと思います。

    UPDATEでデータの更新を行う際には、何かの情報をnullに書き換える場合、そしてもう一つは、null値の存在するレコードに対し、null値から別の値に更新しようとする方法の二通りあります。

    レコードに登録されている特定のカラムの値を書き換える

    「NULLと空文字は別モノ」で触れているように、NULL値は通常の検索では検索結果として反映されません。

    例えば先ほどのテーブルがあるとします。

    このテーブルのcheckup_dateの値がNULL値以外のもの全てをNULL値に変更してみましょう。

    記述方法はまず何も考えずWHEREで条件指定してみます。

    WHEREで条件指定したにもかかわらず、書き換わっていないことが確認できます。

    では次のコードを見てみましょう。

    こちらの記述では、きちんとNULL値でないレコードだけを抽出しNULL値に変更されていることが確認できます。

    このようにUPDATEでNULL値を扱う場合には、条件指定で「IS NULL」もしくは「IS NOT NULL」として指定する必要があります。

    複数条件の中にNULLに関する条件がある場合

    次に、複数条件の中にNULLに関する条件がある場合を想定してみましょう。

    複数条件を一つのクエリで実行するためには通常「IN句」を使用しますので、サンプルコードでも同じようにIN句を使用します。

    また今回のサンプルテーブルは以下の通りとなっています。

    サンプルコードは次の通りです。

    IN句を使った複数条件でNULL値を指定しても、先ほどの説明と同じように反映されていないことが確認できます。

    それでは次のコードではどうでしょうか。

    今度は指定された全ての条件で書き換わっていることが確認できます。

    このように、NULL値を条件として指定する場合には、他の条件とは別で分ける必要があります。

    まとめ

    今回は「SQLでUPDATEを行う際のNULLの扱い」について解説してみましたが、いかがでしたか?

    NULL値はデータベースの概念上「そこに何も存在しない」値として区別されるため、その他の値とは異なった挙動をします。

    もし今後何かでNULLを扱う際には、この記事を思い出してもらえると非常に嬉しく思います。



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

    この記事をシェア

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









    ABOUT US

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

    READ MORE