本記事は、株式会社ギックスの運営していた分析情報サイト graffe/グラーフ より移設されました(2019/7/1)
Nullって何?データベースの不思議な値
普通にExcelなどで業務を行っているだけでは、聞くことがないものの、データベースを扱うと突然でてくる用語「Null」について解説します。
Nullとは
まず、そもそもNullとはなんでしょう。wikipediaから引用します。
null(ヌル、ナル)は、何もない、という意味で、プログラミング言語などコンピュータ関係では、「何も示さないもの」を表すのに使われる。同様のものに、nilが使われることもある。他の名前のこともある。英語では「ナル」だが、日本では「ヌル」が定着している。英語圏で「ヌル」と発音しても通じないので、注意が必要である。
出所:wikipedia
この文章だけで、Nullについて、理解できる人は、前提知識があるか、相当、感が良い人だけだと思います。Nullとは、データを扱う専門職でも誤解したり、使用方法を間違うこともある「ややこしい値」です。データベースの例を出しながら、Nullついて解説します。
データベースの初期値はNull
データベースの世界では、登録されていない項目の初期値には、Nullが入っています。もしかしたら「入っている」表現は、誤っているかもしれません。データベースの世界でNullが入っていることは、その項目に対して何も登録していないことを意味します。ビンの容器があったとすれば、空気が入った空瓶ではなく、真空の状態のようなものです。
空文字列とNullは違う
再度、空文字列について、wikipediaから引用します。
形式言語理論における空文字列(くうもじれつ・からもじれつ、empty string)またはヌル文字列(null string[1])とは、長さが0の一意な文字列であり、文字列における空集合である。主にコンピュータ、特にプログラミング言語において用いられる用語である。
出所:wikipedia
要するに長さを持たない文字列の事です。データベースの場合、項目にNullが入っていることは、何も設定されていないことのため、空文字は、項目に文字列を登録したことになります。よって、wikipediaの中で「ヌル文字列」と言葉は、相反する言葉の組合せのため、データベース上では正確な表現ではない気がします。
データベースでNullの検索は特殊
データベースの世界では、Nullとそれ以外の値で区別して検索されます。Nullが入っている項目に対して、「項目名≠’検索値’」としてもNullの入ったデータは検索できません。また、「項目名=Null」のようにNullが入っているデータをピンポイントで検索できません。データベースの検索では、Nullは、等号(=)、等号否定(≠)、不等号(<>≦≧)の対象になりません。Nullの入ったデータを検索したい場合は「項目名 is Null」のような特殊な検索方法が必要になります。
データベースでNullは重要
ここで疑問になってくるのは、「Nullなんて紛らわしい値を使わずに、空文字列や”0″を使えば?」と思われる方も多いと思います。しかし、データベースの項目には、様々なデータ型が存在し、文字列型、数値型、日付型、バイナリ型などが存在します。文字列型や数値型の場合、初期値として空文字列や”0″を入れれば良いですが、日付型の場合、最小値は1970年1月1日など西暦1年(元年)でないことが多いため、何も登録していない初期値である判断が難しいです。その点、Nullが入っていれば、データ型に関係なく、初期値であることが分かるため、使い方によっては、Nullはとても便利な値となります。(「データ型」については、データ分析用語の解説記事において、別途ご紹介しています。)
本記事は、株式会社ギックスの運営していた分析情報サイト graffe/グラーフ より移設されました(2019/7/1)
参考:プログラミングでのNull ~ぬるぽ~
基本的にプログラミングでの世界でも、Nullの値は同様で、何も設定されていない値を指します。
インターネット掲示板などで出てくる「ぬるぽ」とは、プログラミングの障害を意味し、NullPointerExceptionというエラーの略語です。これは、プログラムの値を設定していないパーツに対して、何らかの操作を行おうとして発生するエラーです。プログラム開発で頻繁に発生するエラーのため、プログラミングに携わらない人でも目にする単語になりました。