「null」とは?(+「DBNull」との違い)

「null」とは?(+「DBNull」との違い)

初学者のつまづきポイントの1つ、
今回は「null」の話です。
よく分かっていない方はもちろん、
DBNullってなんだ?」と思った方も是非読んでいってください。

「null」とは

「null」とは「何のデータも含まれない状態のこと」です。
個人的には「何とも言い表せない虚無」という捉え方がしっくりきています。

nullは空文字や0とは違います。
空文字は「長さ0の文字列」で、
何もないように見えますが文字列ではあるのです。
0は「最小の非負整数」で、
何もないように見えますが数値ではあるのです。
これらに対してnullは「」です。
(書き間違えているわけではなく「」です。)
つまり文字列とも言えないし数値とも言えない、
全く何もない状態を表しています。

「DBNull」との違い

プログラミングをする時に、
使用する言語によっては「DBNull」を考慮する必要があります。
これは「DB上でのnull」を表します。
「null」と「DBNull」との違いをMicrosoftのリファレンスを意訳して説明すると、
「null」は「対象が存在しない状態」、
「DBNull」は「対象がブラックボックス」くらいの違いがあるようです。
例えば「田中さん!」と呼んだ時に、
「null」は誰も来ません、
「DBNull」は生き物かどうかも良く分からない何かが来ます。
正確な説明ではないですが、そのくらい違うということです。

つまり「null」≠「DBNull」です。
プログラミングする中でDBから値を取得した時に、
それがnullかどうかを判別したいケースは多いと思います。
そういう時に上手く判別ができていないとしたら、
「DBNull」を考慮できていない場合があります。

まとめ

「null」は何もない状態で、空文字や0とは違います。
プログラミング言語によっては「DBNull」も存在し、これも別物です。
個人的にnullやDBNullは百害あって一利なしと思っていますので、
なるだけnull判定が不要なロジックやテーブル設計を目指して、
誤動作の危険が少ないシステムを作りたいですね。