Null と 空文字 は同じ意味(解釈)ではありません。
システムの設計や開発、保守、運用など様々なシーンで使用される用語ですが、意外と勘違いして使用されているようです。
Null・空文字以外にも「空白・スペース・ブランク」といった用語があり、それらすべての違いを解説します。
- 「Nullや空文字、空白、スペース、ブランク」のイメージをつかみたい方
- 「Nullや空文字、空白、スペース、ブランク」の認識を再確認したい方
改めて、この記事の内容を調べてみた結果、「ブランク」は言語やDBによって、取り扱いが異なることがわかりました。
認識が間違えていた内容や表現を差し替えています。
“Null と 空文字” 実際の使用例
私の体感で特に勘違いされていているのは、Null(ヌル/ナル)と空文字(からもじ/くうもじ)です。
この2つ以外にも該当する概念ですが、ざっくりと違いを表現するとデータの種類の違い。
下記にそれらデータの使われ方の例としてプログラムのコードとデータベースのSQL文の2点をあげます。
細かい実例はスキップして、すぐに違いを把握したい方は “違いがわかる表”(👈 クリックでページ内にある見出しにジャンプ) をご参照ください。
空文字の使用例:プログラム C#
下記のプログラムコードでは、テキストボックス(textbox_address
)が空文字(""
)の場合、
エラーメッセージを表示するという内容です。
// テキストボックス「textbox_address」に何も入力していない場合
// メッセージボックスで通知する
if textbox_address.Text == "" {
MessageBox.Show("住所が未入力です。",
"必須入力エラー",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
}

なるほど。textbox_address.Text == ""
で空文字か判定しているっピね
Nullの使用例:データベース SQL Server
データベース内にある製品情報の管理テーブル(ProductsMaster
)でWHERE ProductName IS NOT NULL
という条件により、
項目の製品(ProductName
)がNull以外のデータを取得するSQL文という内容です。
-- データベースのテーブル「ProductsMaster」より項目「ProductName」がNull以外のデータを取得
SELECT ProductName, ProductValue FROM ProductsMaster WHERE ProductName IS NOT NULL

DBではWHERE ProductName IS NOT NULL
で、
名前がNullデータ以外のデータを取得という条件っピね。
違いを詳しく解説
グループ分けすると3グループ!
同じ意味の用語でグループ分けすると下記3種類となります。
- “Null” グループ
- “空文字” グループ
※ 利用している環境によりブランクが仲間に入る
- “空白・スペース” グループ
※利用している環境によりブランクが仲間に入る
なお、ブランクは、利用している環境によって扱われ方が異なる用語です。
違いがわかる表
それぞれの違いを書道用具のイラストを使って解説。
比較表では、書道道具を下記のようなイメージで表現しています。
- 下敷き
プログラムの言語など環境がある土台を表しています。 - 半紙
土台(下敷き)上にある文字入力できる器として表現。

繰り返しになりますが、ブランクは、利用環境によって扱いが変わる用語。
その為、この表でも具体的な表現を避けています。ブランクの解説は後述しています。
名前 | Null | 空文字 | 空白 | スペース | ブランク |
---|---|---|---|---|---|
読み方 | ヌル、もしくはナル | カラモジ、もしくはクウモジ | クウハク | - | - |
英語で表現 | “Null” or “Null string” | “Empty” or “Empty string” | “Whitespace” | “Space” [半角スペース] “Half-width Space” or “Single-byte Space” [全角スペース] “Full-width Space” or “Multi-byte Space” | “Blank” |
プログラム表記例 | null | "" or '' | " " or ' ' | " " or ' ' | ※ 利用環境により変化 |
わかりやすいイラスト(イメージ図) | ![]() | ![]() | ![]() | ![]() | ※ 利用環境により変化 |
イラストの状態 [書道用品で表現] ・下敷き プログラムの言語など環境がある土台を表す。 ・半紙 土台にある文字入力できる器として表現。 | 下敷き:あり 半紙 :なし 文字 :-(半紙がない) | 下敷き:あり 半紙 :あり 文字 :なし ※ 青い点線は、文字数がない事を表現 | 下敷き:あり 半紙 :あり 文字 :あり ※ 文字の内容は空白(スペース) | 下敷き:あり 半紙 :あり 文字 :あり ※ 文字の内容は空白(スペース) | ※ 利用環境により変化 |
イラストの解説 | プログラムの変数やデータベースのテーブルなど利用している環境の土台(下敷き)はあるが、文字入力できる器(半紙)がない状態。 | 土台(下敷き)や文字入力できる器(半紙)がある状態だが、文字が書かれていない状態。 | 土台(下敷き)や文字入力できる器(半紙)がある状態で、かつ文字で”空白”が記載された状態。 ※ 空白(スペース)は、スペースキーで入力した際、画面上には見えないのでイメージが掴みにくいと思うが、空白(スペース)にも文字コードがしっかりと割り振られており、視認できない文字として表示される。 | ※ 空白と同様。 | ※ 利用環境により変化 |
グループ | Null | 空文字 ※ 基本的に ブランク という用語の意味に空文字を含まれる。 | 空白 = スペース ※ 環境により ブランク が入ったり入らなかったり。 | 空白 = スペース ※ 環境により ブランク が入ったり入らなかったり。 | ※ 利用環境により変化 |

ここまでブランクを除いた4つの用語「Null・空文字・空白・スペース」の違いを解説しました。
表のとおり「空白とスペース」は同じ意味で使われていますね。

えっ、でも仕事の現場や会話する人によって空白と呼んだり、スペースと呼んだりして、
呼び方が変わるのは、なぜっピ 🤔

それはIT用語全般に言える事なんだけど、同じような意味を持つ用語がたくさんあるんだよね。
わたし個人の意見だけど、そういう場合は仕事現場での伝わりやすさを重視した方が良くて、
それぞれの環境に合わせた用語で呼称した方が良いと思うよ。

たしかに仕事現場に合わせて用語を選択した方が会話するにも齟齬が少なくなるっピね。

ただ、そもそも概念や捉え方が履き違えている場合、認識を合わせる必要はあると思うよ。

わかったっピ。
これでドキュメントや会話、メール、チャットで齟齬が無くスムーズになりそうっピヨ♪
環境により意味・取り扱いが変わる「ブランク」とは
IT分野における「ブランク」という言葉は、言葉の意味やプログラム・DBでの取り扱われ方が統一されていません。使用するプログラムやデータベースの違いによって大きく変わる場合があるので注意が必要です。
この用語の扱われ方は、仕事現場などの環境に強く依存している背景があるため、認識にばらつきがあるというのが実情です。(何を隠そう私もこの記事を書くまで認識が間違えていました。)
下記より具体的な例を使って解説していきます!

例1:表計算ソフトにおけるブランクの扱い
プログラムというのは微妙な所ですが、有名どころの表計算ソフト、Microsoft Excel や Google スプレッドシートでは、ブランクを判定する「ISBLANK」という関数があります。
実際にISBLANK関数を使用した結果は下記の通り。
テストケース | テスト対象の値 | 実行結果 |
---|---|---|
空文字 | “” | TRUE |
空白(スペース) | ” “ | FALSE |
値あり | ”test-value” | FALSE |
この結果から表計算ソフトでは、「“空文字のみ” ブランクである」と定義されていて、
「空白(スペース)はブランクではない」と定義されていることがわかります。
例2:Javaにおけるブランクの扱い
Javaでも、ブランクを判定するメソッド「IsBlank」が存在します。
IsBlankメソッドの結果は下記の通り。
テストケース | テスト対象の値 | 実行結果 |
---|---|---|
空文字 | “” | true |
空白(スペース) | ” “ | true |
値あり | “test-value” | false |
Javaでは、「“空文字” または “空白(スペース)” 両方を ブランクである」と定義。
例3:Kotlinにおけるブランクの扱い
テストケース | テスト対象の値 | 実行結果 |
---|---|---|
空文字 | “” | true |
空白(スペース) | ” “ | true |
値あり | “test-value” | false |
KotlinもJavaと同様、「“空文字” または “空白(スペース)” 両方を ブランクである」と定義されていることがわかります。
参考情報
- Javaにおけるブランク情報
https://www.appsdeveloperblog.com/check-if-java-string-is-empty-null-or-whitespace/ - Kotlinにおけるブランク情報
https://qiita.com/kazu_developer/items/88af247034049945f65d
ここまで解説した通り、ブランクはIT分野で共通認識やルールは無く、使用している環境により意味合い・定義が変わるということがわかりました。
海外のサイトでもブランク(Blank)の取り扱われ方を調査してみましたが、今回の調査結果と同様に共通認識がないようです。
“Blank” という用語そのもののヒット数も極端に少なく、“Empty” や “White space” の方が一般的に多く使用されているという事も見えてきました。
ここまでのブランクの解説をまとめると、
そのエンジニアがJava畑で育ったのか、またはC言語畑で育ったのか、はたまたMySQL畑で育ったのか、など環境によって認識が変わる用語です。
言語などの環境によって認識も変わる用語であるため、会社ごとに違ったり大きな企業だと所属する部署でも異なる認識の可能性も。
これらの事から「ブランク」は、いろいろな体験を積んでいないと、その違いや特徴に気付きにくい危険な用語だと言えます。
ブランクは使用しない方が得策かも…

私個人の意見では、共通認識がない「ブランク」という用語の使用は、
なるべく控えたほうが良いと考えています。

たしかに混乱の種になりそうっピね

ちなみに私もこの記事を作成する前は「ブランク=空文字」という間違った認識でした!
間違いに気付けた良かった……
私はスペースよりも空白を積極的に使用

私から発信する際、意識的に「空白」を使っています。
スペースは文字制御以外においても、よく登場する単語で混乱を招く恐れがあるというのが理由。
ただ、空白の種類を厳密に表すときには「半角スペース」や「全角スペース」など “スペース” を使っています!

なるほど、だっピ😊
“Null と 空文字” に関する例外
ここまでいろいろな情報があって混乱してしまうかもしれません……
「Null と 空文字 は基本的に別物である!」と解説しました。これは、ほとんどのプログラムやデータベースでは一貫した認識ですが、稀に扱いが変わるプログラムやデータベースもあります。
(すごく、ややこしいですよね……IT用語…)
レアケースであったも根幹的なデータの取り扱われ方が違うことによって、システム設計や運用保守などに大きくかかわる重要なポイントだと思うので、おさえておきたい情報になるでしょう。
プログラム関連で例を挙げると PHP や JavaScript で該当するケースがあるようですが、この記事ではデータベース「Oracle」を使って“Null と 空文字” に関する例外を解説します。
Oracleデータベースにおける “Null と 空文字” の扱い
Oracleデータベースでは他のデータベースやプログラムとは異なり、Nullと空文字がほぼ同じ扱いとなっています。
つまり、「Null ≒ 空文字」という関係性。
「Null ≒ 空文字」とは
こちらの解説ページにあるとおり、完全に同じ扱いではありません。
※「≒」は “ニアリーコールまたは、ほぼ等しい” という意味。
このほぼ等しいという表現についてですが、Oracle環境でデータを検索するSQL文を実行する場合、基本的に 空文字とNull は同じ扱いで処理されますが、
テーブル内の実データでは、Nullと空文字を別けて登録することが可能なため、ほぼ等しいという表現で記載。
正直、Oracleデータベースを使ったことがないと理解が難しいポイントだと思います。
完全に理解する必要はないので重要なポイントである「環境によって Null と 空文字 の意味合いや取り扱われ方が違うケースがある。」というのを頭の片隅に置いておけば 👌(オッケー)です。
すこし脱線したので話を戻します。
実データで Null と 空文字 を別けて登録可能と解説しましたが、技術的にできるからといって何も考えずに登録して良いわけではありません。
データベースで Null に特別な意味を持たせて運用してしまうと、ややこしいシステムができあがります。
そのようなシステムがある場合は、良い設定のシステムではないと言えます。
仮にNullに特別な意味を持たせたシステムがゼロから構築したシステムであれば思想や設計に問題があり、
リプレース(システム移行)したシステムなのであれば、移行設計に問題があったのだと思います。
私が最初にさわったデータベースはOracleでした

最初に触ったデータベースは、Oracleです。
その後、他のデータベースである SQL Server にふれる機会があって、
Oracleと同様に「Nullと空文字」は同じ扱いだと勘違いして冷や汗をかきましたね 😓

互換性の問題があるので、簡単にはできないと思うっピけど、
Oracleの Null と 空文字 の仕様は見直すべきっピ 💦

わたしも同じことを思ってたけど、実は面白い情報を見つけたよ。

なんだっピ?
Nullの発明は失敗だった?

Nullに関して興味深い情報を見つけたよ。
Nullを発明したコンピューター科学者のアントニー・ホーア氏が2009年のソフトウェアカンファレンスで、
「Nullの発明は失敗だった」という謝罪があったみたいだよ。

えっ💦 そんなことがあったっピ!?

驚くよね。
今まで私もNullという考え方がある前提でプログラムやデータベースに触れてきたので、すごい驚きの情報だったよ。
Oracle側の意図はわからないけど、
もしかすると業界全体がNullという考え方を見直す未来がある……あるのかも 😂
参考文献
まとめ
- Null と 空文字 は基本的に違う
(レアケースで例外はある)
- グループ分けすると3つに分類
- Null グループ
- 空文字 グループ
※ 環境により ブランク が入ったり入らなかったり。 - 空白・スペース グループ
※ 環境により ブランク が入ったり入らなかったり。
- ブランク はプログラムやデータベースの環境、または仕事現場によって意味合いや取り扱われ方、認識が異なる難しい用語。
(伝わりにくいので、わたしは使いたくない用語)

以上でこの記事は終わりです。
Null や 空文字 をはじめとするデータの種類を意味する用語の違いについて解説しました。
会話していて意外と認識が間違えている方が多いなーと肌で感じたので、記事にしてみました。
この記事が “知るきっかけ” や “ふりかえるキッカケ” になれば幸いです。
それでは、また次回お会いしましょう。さようならー

バイバイっピー🎶
コメント