発掘：Access の Null 値と、長さ 0 の文字列の違いについて

# もともと公開されていたURL
`https://support.microsoft.com/ja-jp/topic/dbd90920-deeb-c549-d470-43a020594f33`
現在は
[必須プロパティ (Access)](https://learn.microsoft.com/ja-jp/office/vba/access/concepts/miscellaneous/required-property-access)
に一部含まれている。(ちなみにまた変な誤訳になっていて、「必須プロパティ」とは「値要求プロパティ」、つまり「値要求設定」のこと。）

<H1>Access の Null 値と、長さ 0 の文字列の違いについて</H1>
<h2>概要</h2>
<br>この資料では、Microsoft Accessで、値がない状態を示す2つの状態について、説明します。</br>

<h2>詳細</h2>
<br> フィールドに値がないもの (空白値) には、データが未入力のものや、Enter キーを押しただけの入力、半角および全角スペースが入力されているものなどがありますが、Access では、空白値を「Null 値」と「長さ 0 の文字列 (空文字列)」という 2 種類に識別しています。</br>
<br> これらは Access 上で区別される場合と、区別されない場合があります。</br>

<h4>例 :</h4>
<h5>テーブルの値をコピー後貼り付けた場合</h5>
コピー元の値に関わらず、後述のテーブルにあらかじめ設定された動作に従い、空白値を挿入します。
<h5>Where 句などで、空白値を取り出す場合</h5>
"Is Null" および "Not Like "*"" は、フィールドに値がないもの (空白値) を抽出する時に使用する条件式です。
"Is Null" は フィールドに「Null 値」をもつものを検索し、"Not Like "*"" は、「長さ 0 の文字列 (空文字列)」を検索するという違う意味を持っていますが、抽出結果は同じです。

<UL>
<li>Null値とは</li>
<li>長さ 0 の文字列とは</li>
<li>長さ 0 の文字列を入力するには</li>
<li>値要求と空文字列の許可設定値の組み合わせから入力される値について</li>
</UL>

<h3>Null 値とは</h3>
 Null 値とは、データが存在しないこと、またはデータが不定であることを示す値で、フィールドに入力したり、式およびクエリで使用する値です。
 たとえば、空白値を抽出するために、抽出条件を "Is Null" とした場合は、空白で、かつ長さ 0 の文字列 (空文字列) も入力されていないものが抽出されます。

<h3>長さ 0 の文字列とは</h3>
 長さ 0 の文字列とは、文字を 1 つも含まない空文字列のことで、意図的にフィールドに値がないことを示します。
 長さ 0 の文字列を入力するには、スペースを含めずにダブル クォーテーションを 2 つ ("") 入力します。
 テーブルによっては、長さ 0 の文字列を入力できない場合がありますが、テーブルのフィールド プロパティで設定を変更することができます。
 たとえば、空白値以外を抽出するために抽出条件を "Like "*"" とした場合、空白でも、0 バイトの文字列 ("") が入力されている場合は、データが抽出されます。
空白値を抽出するために抽出条件を "Not Like "*"" とした場合、空白でも、0 バイトの文字列 ("") が入力されている場合は、データは抽出されません。

<h3>長さ 0 の文字列を入力するには</h3>
 フィールドを空白のままにするときに、Null 値ではなく長さ 0 の文字列を入力する場合は、[値要求] プロパティおよび [空文字列の許可] プロパティの両方を [はい] にする必要があります。
 [値要求] プロパティが [はい] の場合は、Null 値以外の値を入力する必要があります。
 フィールドの [値要求] プロパティおよび [空文字列の許可] プロパティを [はい] にするには、以下の手順を実行します。
<OL>
<li><br>テーブルをデザイン ビューで開きます。</br><br>[オブジェクト] の [テーブル] をクリックし、一覧から任意のテーブルをクリックします。次に、[デザイン] をクリックします。</br><br>ここでは例として、[商品] テーブルを選択します。/br></li>
<li><br>フィールドを選択します。</br><br>プロパティを変更するフィールドをクリックします。</br><br>ここでは例として、[備考] を選択します。</br></li>
<li><br>[値要求] および [空文字列の許可] プロパティの設定を変更します。</br><br>[標準] タブをクリックします。次に、[値要求] および [空文字列の許可] ボックスの一覧から [はい] をクリックします。</br></li>
<li>テーブルを閉じます。
[閉じる] ボタンをクリックします。
<li><br>変更内容を保存します。</br><br>"テーブルの変更を保存しますか?" というメッセージが表示されたら、[はい] をクリックします。</br></li>
</OL>
<br> ダブルクォーテーションを 2 つ ("") 入力することによって、長さ 0 の文字列をテーブルに格納できるようになります。</br>


<h3>値要求と空文字列の許可設定値の組み合わせから入力される値について</h3>

値要求と空文字列の許可設定値の組み合わせから入力される値は、以下のとおりです。

|値要求| 空文字列の許可 | 操作 | 入力される値 |
|:-----|:----------------------|:-------------|:-------------|
|いいえ|いいえ|<br>Enter キーを押す。</br><br>Space キーを押す。</br><br>長さ 0 の文字列を入力する。</br> | <br>Null</br><br>Null</br><br>入力不可</br>|
|いいえ|はい  |<br>Enter キーを押す。</br><br>Space キーを押す。</br><br>長さ 0 の文字列を入力する。</br> | <br>Null</br><br>Null</br><br>長さ0の文字列</br>|
|はい  |いいえ|<br>Enter キーを押す。</br><br>Space キーを押す。</br><br>長さ 0 の文字列を入力する。</br> | <br>入力不可</br><br>入力不可</br><br>入力不可</br>|
|はい  |はい  |<br>Enter キーを押す。</br><br>Space キーを押す。</br><br>長さ 0 の文字列を入力する。</br> | <br>入力不可</br><br>長さ0の文字列</br><br>長さ0の文字列</br>|

<h1>関連情報</h1>

881379 データを抽出するには - [クエリの概要](https://support.microsoft.com/ja-jp/topic/%E3%82%AF%E3%82%A8%E3%83%AA%E3%81%AE%E6%A6%82%E8%A6%81-a9739a09-d3ff-4f36-8ac3-5760249fb65c)
882979 クエリでフィールドに値がないもの (Null 値) を抽出するには - [クエリの抽出条件の例](https://support.microsoft.com/ja-jp/topic/%E3%82%AF%E3%82%A8%E3%83%AA%E3%81%AE%E6%8A%BD%E5%87%BA%E6%9D%A1%E4%BB%B6%E3%81%AE%E4%BE%8B-3197228c-8684-4552-ac03-aba746fb29d8)
883246 クエリで任意の文字列が含まれるフィールドを抽出するには - [クエリの抽出条件の例](https://support.microsoft.com/ja-jp/topic/%E3%82%AF%E3%82%A8%E3%83%AA%E3%81%AE%E6%8A%BD%E5%87%BA%E6%9D%A1%E4%BB%B6%E3%81%AE%E4%BE%8B-3197228c-8684-4552-ac03-aba746fb29d8)
294954 [ACC2002] パラメータ クエリで LIKE 演算子を使用する方法  - [クエリの抽出条件の例](https://support.microsoft.com/ja-jp/topic/%E3%82%AF%E3%82%A8%E3%83%AA%E3%81%AE%E6%8A%BD%E5%87%BA%E6%9D%A1%E4%BB%B6%E3%81%AE%E4%BE%8B-3197228c-8684-4552-ac03-aba746fb29d8)
[411174](https://web.archive.org/web/20121215072205/http://support.microsoft.com/kb/411174/ja) [ACC2002] 空白値を含むテーブルを Excel 形式としてエクスポートした場合、空白セルとして認識されない

さらにAC2013では以下のような三部作になっている。
[AC2013 クエリの抽出条件 - 第 1 部: 具体的に指定する](https://support.microsoft.com/ja-jp/office/%E3%82%AF%E3%82%A8%E3%83%AA%E3%81%AE%E6%8A%BD%E5%87%BA%E6%9D%A1%E4%BB%B6-%E7%AC%AC-1-%E9%83%A8-%E5%85%B7%E4%BD%93%E7%9A%84%E3%81%AB%E6%8C%87%E5%AE%9A%E3%81%99%E3%82%8B-62a4dbd6-3a0b-4e9c-a1e5-ebecfa5e5785)
[AC2013 クエリの抽出条件 - 第 2 部: LIKE 演算子とは](https://support.microsoft.com/ja-jp/office/%E3%82%AF%E3%82%A8%E3%83%AA%E3%81%AE%E6%8A%BD%E5%87%BA%E6%9D%A1%E4%BB%B6-%E7%AC%AC-2-%E9%83%A8-like-%E6%BC%94%E7%AE%97%E5%AD%90%E3%81%A8%E3%81%AF-eeec9950-42ed-4665-821f-99f8bbba9f9e)
[AC2013 クエリの抽出条件 - 第 3 部: パラメーターを使って入力を求める](https://support.microsoft.com/ja-jp/office/%e3%82%af%e3%82%a8%e3%83%aa%e3%81%ae%e6%8a%bd%e5%87%ba%e6%9d%a1%e4%bb%b6-%e7%ac%ac-3-%e9%83%a8-%e3%83%91%e3%83%a9%e3%83%a1%e3%83%bc%e3%82%bf%e3%83%bc%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e5%85%a5%e5%8a%9b%e3%82%92%e6%b1%82%e3%82%81%e3%82%8b-997fd081-f8e2-4536-9170-37e07b2b3c1f)
[Exporting a table from Access to Excel with Null Values (want the field Numeric)](https://answers.microsoft.com/en-us/msoffice/forum/all/exporting-a-table-from-access-to-excel-with-null/a1e87338-847f-4d00-bbbf-1f7af4dcdde3)
[Excel cells from Access export look empty but are not (=isblank=FALSE) - Stack Overflow](https://stackoverflow.com/questions/45728183/excel-cells-from-access-export-look-empty-but-are-not-isblank-false)
Access2007で同様の現象が起きている
この場合 書式設定とレイアウトを保持したままデータをエクスポートするのチェックボックスを<b>オフ</b>とする