『NULL』『ブランク』の違いを解説 『スペース』『空文字』との違いも

  • 2020年2月22日
  • IT
IT
がが
この前さ。データ探してたんだけど、あるはずのデータがSELECT文で見つからなかったんだよ。
やーぎ
それはおかしいね。理由はわかった?
がが
それがさ。【IS NULL】って書いてたんだけど、【= ”】って書く必要があったんだよ。
やーぎ
あぁそういうことね。『ブランク』と『NULL』の違いだね
がが
そうみたい。でも『ブランク』とか『NULL』とかわかりにくいよね。
やーぎ
そうだね。『空白』『スペース』『空文字』とかもあるよね。

『NULL』と『ブランク』の違いがわからない!!そんなプログラマーは新人だけではありません。

実は、経験してきたキャリアによっては認識に違いが出てくるんです。

そこで今回は、現役SEが『NULL』『ブランク』『スペース』『空白』『空文字』の違いを解説します。

この記事を読むのに必要な時間は約 5 分です。

一番間違えにくいのが『スペース』『空白』

これは、共通認識を持っている人が多いです。

『スペース』はそのまま『半角スペース』『全角スペース』として使用されますからね。ほとんどの人は『スペース』と聞けば、同じイメージを持つでしょう。

『空白』も同じ意味です。

『ブランク』と『空文字』の違い

まずは、最初に『ブランク』と『空文字』の違いです。

結論から言うと、違いはありません。言い方の問題で同じ意味です。ちなみに私は、『空文字』という表現は使いません。

しかし、『ブランク』という言葉を使用した時に、「『空文字』のこと?」と聞かれることがあります。只の言い方のことなので、深く考えないようにしましょう。

『ブランク』と『空文字』は同じ意味

一番ややこしいのが『NULL』と『ブランク』の違い

がが
そうそう。『NULL』と『ブランク』が一番わかりにくいんだよね。人によって言ってること違うし。
やーぎ
そうだね。確かにここが一番ややこしいと思うよ。

ほとんどの人がややこしいと感じているのが『NULL』と『ブランク』の違いですよね。

これは、非常に間違えている人が多いです。

現役プログラマーでも、レベルの低い人は、違いを理解せずにプログラミングをして、バグを引き起こします。

では、説明していきましょう。

『ブランク』とは?『スペース』『空白』との違い

人によっては、『ブランク』のことを『スペース』や『空白』と同義だと思っている人もいますが、まったく意味が違います。『スペース』には、長さが存在しますが『ブランク』には長さが存在しません。

『スペース』は、半角・全角スペースをダブルクォーテーション、またはシングルクォーテーションで囲んだ形で表現されます。

【” “】【” ”】【’ ‘】【’ ’】のようにクォーテーションの間に長さが存在するような値のこと

それに対しブランクは、ダブルクォーテーション、またはシングルクォーテーションのみで表現されます。

【””】【”】のようにクォーテーションの間に長さが存在しない値のこと

『NULL』とは?

『NULL』は、値もなければ要素の定義もされていない状態のことです。

『ブランク』と違い、表現する時はダブルクォーテーションもシングルクォーテーションも使用しません。『NULL』です。

値の長さだけでなく、要素の定義もない存在しない状態のこと

プログラマーによって認識が違うのは何故?

がが
なるほど。違いはわかったわ。けど、何で同じプログラマーでも認識が違うことがあるの?
やーぎ
それはね。実は違いが必要ない場合も存在するんだよ。
がが
え!?そうなの?

ここまでの説明で理解はしていただいたと思います。

ただ、何故プログラマーによって認識の違いがあるかが気になりますよね。

それは『NULL』と『ブランク』の違いを意識せずにプログラミングをしても問題ないケースが存在するからなんです。

それも説明します。

認識が違う理由は、データーベースにより解釈が違うことにある

がが
え?データベースによって『NULL』と『ブランク』って解釈が違うの?
やーぎ
そうなんだよ。これがプログラマーによって認識が違う一番の原因じゃないかな。

そうなんです。プログラマーでも認識が違う理由はデータベースの解釈のせいというのが一番多い理由です。

Oracle以外のデータベースでは、『NULL』と『ブランク』を明確に区別しているのですが、実はOracleでは『NULL』と『ブランク』の違いがないんです。

つまり、Oracleでプログラミングを覚えた人は、違いを理解していない人が多いのです。

プログラム言語によって、認識の違いが生じることもありますが、データベースによっても認識が変わるんですね。

参考になる記事があります。他のDBと比較している表があるので、見てみてください。

今日は、SQL DBの文字型におけるNULLと空白文字(スペース)のお話しをします。 SQL DBに...…

『NULL』と『ブランク』以外にも、データベースによって解釈が違うことがわかります。

結局は経験で覚えていくしかない

がが
なるほど。そういうことだったんだね。
やーぎ
理解できたなら大丈夫。JAVAとかだと『NULL』も『ブランク』もどっちも含めるような部品が用意されていたりもするよ。
がが
そっか。理解していないと、単純に【IS NULL】みたいなコードを組んでしまうけど、理解すれば、正しいプログラミングが出来るわけだね。
やーぎ
そういうことだよ。こればっかりは、勉強するか一度バグを出すことでしか覚えないよね。

普段の業務で意識せずにコーディングをしている人は、こういった凡ミスでバグは出してしまいます。

勉強をして実際にコーディングをすることによって経験を積むと、こういった凡ミスでのバグは減っていきます。凡ミスは工数が無駄に増えてしまう要因です。

品質の高いコーディングをして、工数を削減しましょう。

最新情報をチェックしよう!