Amazonでセール開催中! 詳細はココをクリック ☜ (゚ヮ゚☜)

“Null/空文字/ブランク/空白/スペース”の違いとは(プログラム・DB関連)

よく勘違いされますがNullと空文字は一緒ではありません。

システムの設計や開発、保守、運用など使用される事が多い用語ですが、
意外と間違って使われています。

プログラムやデータベース(DB)で使う
Nullや空文字、ブランク、空白、スペースの違いを解説します。

 

この記事はこんな方にオススメ!

  • Nullや空文字などについてイメージをつかみたい方
  • 違いを再確認したい方
     
目次

使用する場面は?

Null(ヌル)や空文字などのデータを扱う例として、
プログラムの判定やデータベースのデータ取得の際に使用されます。

プログラムでの空文字の使用例

textbox_jyusho.Text == ""の条件によりテキストボックスが空文字(””)の場合、
エラーのメッセージボックスを表示するプログラムの例です。

// テキストボックス「textbox_jyusho」に何も入力していない場合
// メッセージボックスで通知する
if textbox_jyusho.Text == "" {
	MessageBox.Show("住所が未入力です。",
					"必須入力エラー",
					MessageBoxButtons.OK,
					MessageBoxIcon.Error);
}

データベースでのNullの使用例

データベースの商品テーブル(TBL_SHOHIN)でWHERE NAME IS NOT NULLの条件により
商品名(NAME)がNull以外の商品データを取得するSQLコマンドの例です。

-- データベースのテーブル「TBL_SHOHIN」より項目「NAME」がNull以外のデータを取得
SELECT NAME, VALUE FROM TBL_SHOHIN WHERE NAME IS NOT NULL

違いを解説

同じもの同士でグループ分けすると「Null」と「空文字・ブランク」、「空白・スペース」の3種類にわかれます。
詳細な違いは下記のとおりです。

名称プログラム表記例イメージ補足事項
Null(ヌル・ナル)null  ←器なし
空文字“” ←器あり、中身なし空文字 = ブランク
ブランク“” ←器あり、中身なし空文字 = ブランク
空白” “ ←器あり、中身あり
   (中身は文字はなく空白のみ)
空白 = スペース
スペース” “ ←器あり、中身あり
   (中身は文字はなく空白のみ)
空白 = スペース
表:Null・空文字・ブランク・空白・スペースの違い
akiGAMEBOY

「Null」と「空文字・ブランク」、「空白・スペース」
それぞれの違いについて理解できたでしょうか。
表のとおり「空文字とブランク」「空白とスペース」は
同じ意味です。

IT用語全般に言える事ですが同じ意味を持つ用語は
複数あります。
現場環境によって使用している用語に違いもあるので
伝わりやすさを重視するならば
環境に合わせた用語を選択した方が良いでしょう。

しらたま

たしかに仕事している環境に合わせて用語を使った方が
お互い頭の中での変換が必要なくなるっピ。

特別な理由がない限り合わせた方がドキュメントや会話、
メールなど伝達する際もスムーズになるっピね♪

akiGAMEBOY

ちなみに私から発信する際は意識的に「空文字」と「空白」を
使うようにしています。

理由としては空文字と同じ意味のブランク(Blank)は
英語で翻訳すると空白の意味もあります。
混乱を招いてしまうと考え「空文字」を使っています。

また、空白と同じ意味のスペースは文字制御以外でも
よく登場する言葉です。
こちらも混乱を招いてしまうと考え「空白」を使っています。

Nullと空文字についての例外

Oracleデータベースでは例外

これまでの解説では「Nullと空文字」を異なるものとして紹介しましたが、
実は例外があります
Oracleデータベースでは他のデータベースと異なりNullと空文字が、
ほぼ同じ扱いとなっています。

Oracleでは空文字についてもNullとして判断される為、
Oracleに限っては「Null ≒ 空文字」という関係性です。

詳しい解説

こちらの解説ページにある通り完全に同じ扱いという訳ではありません。

SQL文でデータを検索する場合、空文字はNullとほぼ同じ扱いで処理されますが、
Oracleデータベースのテーブルに格納されている実データはNullと空文字はわけて登録可能です。

ただ、データベースを使ったシステムで実データにNullと空文字の2種類のデータが混在している状況は、
良い状態ではありません。

仮にそのシステムがゼロから作ったシステムなのであれば、
データ設計に問題があったと考えられます。
もしくは、そのシステムがリプレースしたシステムなのであれば、
データ移行に問題があったと考えられます。

参考情報:Oracle公式 Nullについて(英文)

akiGAMEBOY

私が最初に触りSQL文を学んだデータベースは
Oracleでした。

それから月日が経って
他のデータベース(SQL Server)にふれる機会があり
Oracleと同様に「Nullと空文字」は同じ扱いだと
勘違いしていました😓

akiGAMEBOY

過去のバージョンとの互換性の問題があるので
簡単にはできないと思いますが、
OracleのNullと空文字に関する仕様は見直して
ほしいですね💦

しらたま

そのことで興味深い情報を見つけたッピよ。

Nullを発明したコンピューター科学者のアントニー・ホーア氏
2009年のソフトウェアカンファレンス
Nullの発明は失敗だった」という謝罪があったみたいッピよ。

akiGAMEBOY

そうなんだー、知らなかったよ。

Nullの考え方があるという前提で
プログラムやデータベースが浸透しているから
ビックリな情報だね。

Oracle側の意図はわからないけど、もしかすると
OralceのようにNullを無くしていくような方向に
業界が動いていくかもしれないね。

まとめ

  • 「Null」と「空文字」は違う
     
  • 「Null」と「空文字・ブランク」、「空白・スペース」の3種類にわけることができる。
     
  • 例外としてOracleデータベースでは「Null」と「空文字」はほぼ同じ扱い
akiGAMEBOY

以上でこの記事は終わりです。

Nullや空文字などの違いについて解説しました。
会話していて意外と認識が間違えている方が多いなーと
肌で感じた為、記事にしてみました。
 
この記事で知るきっかけや振り返るきっかけになれば幸いです。
 
それでは、また次回お会いしましょう。
さようならー

しらたま

バイバイっピー🎶

サポート募集中

この記事はお役に立てたでしょうか。現在、サポートを募集しています。
コーヒーを一杯 ☕ ご馳走いただけないでしょうか。

この記事をシェア

コメント

コメントする

コメントは日本語で入力してください。(スパム対策)

CAPTCHA

目次