ACCESS クエリの抽出条件の書き方

クエリの抽出条件の書き方

ACCESSのクエリでは、様々な抽出条件を設定してレコードを抽出できます。
しかし、慣れないと抽出条件の書き方に悩むものです。

そこで、今回はクエリの抽出条件の書き方について説明します。


こんにちは。
はこにわガジェット (@hakoniwagadget) です。

ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは使いこなすために少しスキルが必要なものの、うまく活用すればExcelよりも業務の効率化が図れます。
この記事ではACCESSの基本的な使い方をご紹介していきます。

クエリの抽出条件設定方法

まず、クエリの抽出条件の設定方法です。
クエリをデザインビューで開くと、下段に抽出条件という行があります。

条件を設定したいフィールド(列)の抽出条件欄に条件式を記載することで抽出条件の設定が可能です。
例えば、商品名の条件で抽出したい場合は、商品名の列の抽出条件行に式を記入します。

抽出条件のパターン

クエリの抽出条件の書き方は大きく分けて以下があります。

・完全一致
・部分一致
・範囲指定
・NOT(除外)
・OR(〇〇もしくは〇〇)
・AND(〇〇かつ〇〇)

以下でそれぞれの書き方を説明します。

サンプルデータ

今回はサンプルデータとして以下の商品テーブルを用意しました。
こちらに対して様々な条件でクエリによる抽出を行っていきましょう。

完全一致

最初は完全一致です。
これは、抽出条件と全く同じ値のレコードのみを抽出する方法です。

例えば、サンプルのテーブルから商品名が「ACCESS売上管理ツール作成」のレコードだけを抽出してみましょう。

クエリの抽出条件に以下のように設定します。

抽出条件にテキストを指定する際は「”」で前後を囲みます。

では、結果を見てみましょう。

このように、該当のレコードのみが抽出できました。

なお、数値の場合は「”」は不要です。

例えば、単価が20,000円のレコードのみを抽出する条件は以下になります。

結果を見ると、このように抽出できます。

以上が完全一致での抽出でした。

部分一致

続いて、部分一致です。
これは、抽出条件の一部が合致するレコードを抽出する方法です。

サンプルの商品テーブルから「オプション」という文字が入っているレコードのみを抽出してみましょう。

抽出条件は以下のように設定します。

Like “*オプション*”

部分一致をさせる場合は、「*」(アスタリスク)を使用します。
アスタリスクはワイルドカードと言って、任意の文字を表しています。

ですので、この条件ですと前後に何らかの文字があっても、どこかに「オプション」という文字が入っているレコードが抽出されるのです。

結果がこちらです。

オプションという文字が入っているレコードが抽出されました。

なお、前方だけワイルドカードにする場合や後方だけワイルドカードにする方法もあります。
文字列の最初の数文字を固定で検索したい場合や、最後の数文字を固定で検索したい場合です。

例えば、上記の例ですと後方一致に条件を書き換えて、

このように表現しても結果は同じになります。

範囲

続いて、数値などで範囲を指定して抽出する方法です。

サンプルデータで、単価が20,000円以上のレコードのみを抽出したい場合は、下記のように設定します。

>=20000

不等号で表現するだけですので感覚的に分かりやすいと思います。
忘れがちなのが、「=」を不等号の前と後ろのどちらにつけるか、ですね。

結果を見てみましょう。

このように、単価が20,000円以上のレコードのみが抽出されました。

今回は〇〇以上という条件でしたが、もちろん〇〇以上、〇〇未満のような範囲指定もできます。

例えば、同じく単価が10,000円以上、20,000円未満の場合は下記の設定になります。

<20000 And >=10000

Andを使って複数の条件を接続する形です。
不等号はどちらの向きでも数値の前に来ることだけを覚えておいてください。

Not(除外)

条件として、〇〇以外という指定をしたい場合があります。
こうした際に使用するのが、Notです。

サンプルとして商品名が「マニュアル作成オプション」以外のレコードを抽出してみましょう。
以下のように設定します。

Not “マニュアル作成オプション”

Not演算子の後に、対象のテキストを書いているだけですね。
結果を見てみましょう。

このように、「マニュアル作成オプション」以外のレコードが抽出できました。

しかし、実務ではこのようにテキスト完全一致で除外することは稀です。
むしろ、前述した部分一致を使うことの方が多いでしょう。

例えば、「追加」という文字を含まないレコードのみを抽出する場合は、以下の設定になります。

Not Like “追加

このように、部分一致などを組み合わせて柔軟に活用しましょう。

Or(〇〇もしくは〇〇)

複数の条件を組み合わせて抽出したいという場合もあると思います。
その際、2つの条件が〇〇もしくは〇〇の場合に使用するのがOr演算子です。

例えば、単価が11,000円か20,000円のレコードのみを抽出してみましょう。

以下のように設定します。

11000 Or 20000

単純に数値をOrでつないだだけですね。
では結果を見てみましょう。

無事に対象のレコードのみが抽出されました。

もちろん、テキストの条件でOrを使うことも可能です。

例えば、商品名に「追加」もしくは「ACCESS」を含むレコードを抽出したい時の条件は以下になります。

Like “追加” Or Like “ACCESS*”

また、実はACCESSのクエリではOr演算子を使用せずに、〇〇もしくは〇〇の条件を作成できます。
抽出条件行の下に「または」と書いてあることにお気づきでしょうか?

実はクエリの抽出条件は複数の行に記載することが可能で、その場合の各行に記載した条件間の関係はOr条件になるのです。

上記の例でいえば、下記のように設定しても同じ結果が得られます。

And(〇〇かつ〇〇)

今度は逆に○○かつ○○、という場合です。
この場合はAnd演算子を使用します。

これは先ほどの例にも出しましたが、 単価が10,000円以上、20,000円未満のレコードを抽出する場合は下記の設定になります。

<20000 And >=10000

単純にAndを使って二つの式を接続するだけで実現可能です。

上記の例では、同じフィールド(この場合は単価)の中で条件を記載しました。
では、複数のフィールドにわたってAndk条件を設定したい場合はどうすればよいでしょうか。

その場合は、抽出条件の同じ行に条件を記載することで実現することができます。

例えば、商品名に「オプション」を含み、単価が10,000円以上のレコードを抽出する場合は以下の設定になります。

複数のフィールドの同じ抽出条件行に条件を記載することで、各条件をAndでつなぐことを表現できます。

結果を見てみましょう。

条件に合致したレコードのみが抽出されています。

ここで注意していただきたいのは、別の行に条件を記載すると、And条件ではなくOr条件になってしまうということです。

例えば、下記のように設定したとします。

この場合、

商品名 Like “オプション

単価 >= 10000

はOr条件になってしまいます。

そのため、クエリの結果は

このように、想定したものと異なってしまいますので注意が必要です。

クエリの抽出条件でフォームを参照させる

最後に、クエリの抽出条件でフォームを参照させる方法です。
こちらに記事をまとめましたのでご覧ください。

クエリの抽出条件でフォームを参照させる方法

以上、クエリの抽出条件の書き方についてご紹介しました。


ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。

そんな時は、ACCESS開発歴20年以上、過去に100以上のACCESSデータベースを開発してきた私(@hakoniwagadget)にお任せください。

ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。

サービス一覧

最後までお読みいただき、ありがとうございました。