ヘルプの森~Excel・Access・Office全般ヘルプデスクサイト

No.008

クエリで空白(でない)データを抽出したい、Accessの空白について

2003/2007/2010/2013/2016

このお問い合わせは、単一条件の抽出ですので、それほど難しい話ではありません。
ところが、何度もいただく内容なのです。
それは、Accessの空白については理解が必要であるからです。

Excelで空白というと「""」の空白だけですが、Accessで空白というと、空っぽの空白「Null値」と「長さ0の文字列」の空白("")の2つがあります。

「空白である」抽出の書き方は、空っぽの空白の場合「null」と記入し確定すると「Is Null」と表示されます。また、「Not Like "*"」でもNull値の抽出となります。
長さ0の文字列の場合は、「""」です。

一方「空白でない」抽出の書き方について、空っぽの空白でない場合「not null」または「<>null」と記入し確定すると「Is Not Null」と表示され、Null値以外の抽出となります。
長さ0の文字列の場合は、「not ""」または「<>""」です。

よく大規模なデータベースで、クエリがたくさんある中での空白の抽出を行う場合に、どちらの空白かがはっきりしない場合があります。
とりあえず「null」の方でやってみる、だめなら「""」でやってみる、ということでいいと思います。

また、以前にお問い合わせで、「null」で抽出しても「""」で抽出しても件数が合わない、といただいたことがあります。
結果的に、その抽出をしているフィールドにはNull値と長さ0の文字列の両方が入っていました。
したがって、抽出条件には「Is Null Or ""」と設定してようやく数が合ったということがありました。

データによって、さまざまなケースがあります。
どちらの、または両方の空白がデータに入っているのかをよく確認して、操作してください。

ヘルプmemo

<Accessの空白について>

Accessの空白がからむ作業については、データができた経緯を確認しながら操作してください。

Accessの空白についてはMicrosoftのヘルプページ「Access の Null 値と、長さ 0 の文字列の違いについて」をよくご確認ください。

関連ヘルプ

クエリの演算フィールドについて、式ビルダーの使い方
クロス集計クエリの結果のNull値を「0」と表示する
重複のない一通りデータを取得したい
テーブルのデータ型をクエリで変更する 《データ定義クエリ》
外部結合とは
削除クエリで、別のテーブルまたはクエリと共通するレコードを一括削除する
複数テーブルをつなげてレコードを結合する 《ユニオン クエリ》
重複クエリとは
部分一致のパラメーター クエリを作成する、パラメーター クエリの設定方法
更新クエリでテーブルのデータを置換する(文字列の一部更新)
クロス集計クエリを元にパラメーター クエリを実行「~認識できません」エラー
特定のレコードのみ最初に並べ、他のレコードは普通に並べ替えする
基本的な抽出条件の書き方について
ワイルドカードや数式を使用した高度な抽出
クエリで連番、グループ連番をふる
アクション クエリのメッセージを非表示にするには
twitter hatena line pocket