IT

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

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

『スペース』とは?

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

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

『ブランク』とは?

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

『NULL』とは?

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

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

『NULL』とは?

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

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

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

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

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

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

それも説明します。

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

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

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

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

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

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

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

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

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

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

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

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

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

現役SEが教えるプログラミング教育の必修化について 内容の概要とこれからの課題2020年度より「小学校のプログラミング教育」が必修化されることが2017年3月に決定しました。 しかし、実際に「何という教科になるの...
基本情報技術者試験(FE)に1発合格する勉強方法国家試験である基本情報技術者試験(FE)ですが、 「基本」という名前から簡単な試験だと思っていませんか? 実は、 現役のプログラマーや...
応用情報技術者試験(AP)に一発合格する勉強法、おすすめテキスト・参考書応用情報技術者試験(AP)に一発合格するのは、意外と大変です。 私の場合、基本情報技術者試験(FE)を持っていましたが、それでも難しか...
ABOUT ME
やーぎ
大阪で高卒SEをしている20代後半の男です。 脱サラのためにブログを書いています。

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA