Accessクエリの抽出条件の書き方 基本29パターン

概要

この記事の結論
Accessクエリの抽出条件は、デザインビューの「抽出条件」行へ値や比較式を入力します。文字列は引用符、数値は数値、日付は日付として扱い、未入力は Is Null で判定します。以下の29パターンは通常のACCDBとANSI-89のワイルドカードを前提にした例です。

この記事でわかること

  • 数値の一致と大小を指定する
  • 未入力と文字列を抽出する
  • Yes/Noと日付とパラメーターを使う
  • 複数条件を組み合わせる

この記事の主な内容

  1. 条件はデータ型と入力場所に合わせて書く
  2. 数値の一致と大小を指定する
  3. 未入力と文字列を抽出する
  4. Yes/Noと日付とパラメーターを使う
  5. 複数条件を組み合わせる
  6. 条件を一つずつ検証して保存する
  7. よくある質問

想定読了時間:約8分~12分


1 条件はデータ型と入力場所に合わせて書く

Accessクエリの抽出条件は、デザインビューの「抽出条件」行へ値や比較式を入力します。文字列は引用符、数値は数値、日付は日付として扱い、未入力は Is Null で判定します。以下の29パターンは通常のACCDBとANSI-89のワイルドカードを前提にした例です。

SQLビューではWHERE句にフィールド名も書くため、条件欄へ貼る式とは形が異なります。まず入力場所を確認してください。

抽出条件の4分類について、数値、文字、空欄、日時の関係を示す図

2 数値の一致と大小を指定する

等しい・より大きい・以上は、それぞれ =、>、>= を使います。Betweenは両端を含むため、10~20なら10と20も対象です。対象のフィールドが数値型であることを確認してください。

文字列のコードを数値へ置き換えると先頭ゼロの意味が失われます。数量と商品コードを同じ書き方で処理しないようにします。

設定例と確認点

No対象列条件式意味
1商品名“ノート”完全一致
2商品名<>”ノート”一致しない(Nullは別)
3数量=1010と等しい
4数量>1010より大きい
5数量>=1010以上
6数量<1010未満
7数量<=1010以下
8数量Between 10 And 2010以上20以下
9数量Not Between 10 And 20範囲外
10数量In (1,3,5)いずれかに一致
11数量Not In (1,3,5)指定値以外
数値の境界について、超える、以上、範囲の関係を示す図

3 未入力と文字列を抽出する

Nullは値が不明・未入力である状態です。空文字やスペースとは別に扱います。<>、Not In、Not Likeなどの否定条件だけでは、Nullの行は通常含まれません。必要なら Or Is Null を追加します。

Likeのワイルドカードは正規表現とは異なる仕組みです。次の表はANSI-89形式で、ANSI-92設定のデータベースでは記号を読み替える必要があります。

設定例と確認点

No対象列条件式意味
12数量Is Null未入力
13数量Is Not Null入力済み
14商品名“”空文字
15商品名Is Null Or “”Nullか空文字
16商品名Like “ノート*”前方一致
17商品名Like “*ノート”後方一致
18商品名Like “*ノート*”部分一致
19商品コードLike “A?”Aと任意1文字
20商品コードLike “A#”Aと数字1文字
21商品コードLike “[ABC]*”先頭がA・B・C
22商品コードLike “[A-Z]*”先頭が指定範囲
23商品コードLike “[!A]*”先頭がA以外
24商品名Not Like “*試作*”試作を含まない
空欄の違いについて、Null、空文字、スペースの関係を示す図
Likeの一致範囲について、前方、後方、部分の関係を示す図

4 Yes/Noと日付とパラメーターを使う

Yes/No型の条件にはTrueまたはFalseを使います。日付/時刻には時刻も保存されるため、今日の全件は今日0時以上、翌日0時未満で抽出します。今月も月初以上・翌月初未満なら月末の時刻を含められます。

角括弧で入力を求めるパラメーターには型を明示します。例29の最低数量を入力は長整数として定義すると、意図しない文字列入力を検出しやすくなります。

設定例と確認点

No対象列条件式意味
25有効TrueYesの行
26有効FalseNoの行
27受注日時>=Date() And <Date()+1今日の全時刻
28受注日時>=DateSerial(Year(Date()),Month(Date()),1) And <DateSerial(Year(Date()),Month(Date())+1,1)今月
29数量[最低数量を入力]入力パラメーターと等しい
日付とパラメーターについて、日付、入力値、未入力の関係を示す図

5 複数条件を組み合わせる

同じ条件行の別列はAND、別の「または」行はORとして扱われます。複雑な条件はSQLビューで括弧の位置を確認すると、どの条件をまとめて判定するかを見失いにくくなります。

例えば東京または大阪の顧客で有効な行だけなら、都市のORを括弧で囲み、有効のAND条件を組み合わせます。

サンプルコードと式

SELECT * FROM [M_顧客]
WHERE ([都市]=”東京” OR [都市]=”大阪”)
 AND [有効]=True;

複数条件の関係について、同じ行、別の行、SQLの関係を示す図

既存Accessへの影響を判断できない場合

本記事の手順をコピーしたファイルで試しても解決しない場合や、既存データ・他の画面への影響を判断できない場合は、お気軽にご相談ください。対象ファイル、操作手順、期待する結果を整理すると、調査や改修の範囲を相談しやすくなります。


6 条件を一つずつ検証して保存する

入力した式で出るはずの値、出ないはずの値、境界値、Nullを試します。前方一致と部分一致、以上と超過など、似た条件ほど対象IDを具体的に照合してください。

想定外のパラメーター入力は、フィールド名の誤字でも発生します。条件を保存した後は、残ったフィルターや元クエリの条件も含めて再表示し、安定して同じ意図の結果になることを確認します。

式を検証するケースについて、一致、不一致、境界、Nullの関係を示す図

7 よくある質問

Nullは通常含まれません。必要ならOr Is Nullを加えます。

条件欄には比較式だけを入れます。WHEREを含むSQL全体はSQLビューへ入力します。

ANSI-89とANSI-92で記号が異なります。データベースの設定を確認します。

まとめと相談先

想定外のパラメーター入力は、フィールド名の誤字でも発生します。条件を保存した後は、残ったフィルターや元クエリの条件も含めて再表示し、安定して同じ意図の結果になることを確認します。

本記事の手順をコピーしたファイルで試しても解決しない場合や、既存データ・他の画面への影響を判断できない場合は、お気軽にご相談ください。対象ファイル、操作手順、期待する結果を整理すると、調査や改修の範囲を相談しやすくなります。


参考情報

Microsoft公式資料を参照しています。サンプルは説明用の架空データです。Windows版Accessの実機検証は未実施のため、適用前に対象環境のコピーで結果を確認してください。

Microsoft:抽出条件の例
https://support.microsoft.com/en-us/access/examples-of-query-criteria

Microsoft:ワイルドカード
https://support.microsoft.com/en-us/access/access-wildcard-character-reference

Microsoft:PARAMETERS
https://learn.microsoft.com/en-us/office/client-developer/access/desktop-database-reference/parameters-declaration-microsoft-access-sql

TOP