クエリの抽出条件の例

フィールド内の値に基づいてクエリの結果を制限するには、クエリ条件を使用します。 クエリ条件とは、Access でクエリ フィールドの値を比較して、それぞれの値が含まれるレコードを含めるかどうかを決定するための式です。 たとえば、= "兵庫県" という式を使用すると、クエリ内のテキスト フィールドの値と比較できます。 あるレコードのそのフィールド内の値が "兵庫県" であれば、クエリ結果にそのレコードが含まれます。

このトピックでは、クエリ条件の例をいくつか示します。 ここでの内容は、簡単な SELECT クエリをデザインできるユーザーを対象としています。

SELECT クエリの詳細については、「クエリを使ってデータを選ぶ」の記事を参照してください。

この記事の内容

クエリ条件の概要

"テキスト型"、"メモ型"、"ハイパーリンク型" のフィールドの抽出条件

"数値型"、"通貨型"、"オートナンバー型" のフィールドの抽出条件

"日付/時刻型" フィールドの抽出条件

その他のフィールドの抽出条件

クエリ条件の概要

抽出条件は数式に似ており、フィールドの参照設定、演算子、定数で構成される文字列です。 クエリ条件は、Microsoft Office Access 2007では式とも呼ばれます。

次の表に、いくつかの抽出条件のサンプルとその機能を示します。

条件

説明

>25 and <50

"価格" や "UnitsInStock" などの "数値型" フィールドに適用されます。 この抽出条件を適用すると、"価格" や "UnitsInStock" のフィールドに 25 より大きく 50 より小さい値が含まれるレコードのみが含まれます。

DateDiff ("yyyy", [生年月日], Date()) > 30

生年月日などの "日付/時刻型" フィールドに適用されます。 クエリ結果には、ある人の誕生日と今日の日付の間の年数が 30 を超えるレコードのみが含まれます。

Is Null

フィールド値が null のレコードが表示されるフィールドの種類に適用できます。

このように、抽出条件は、適用先のフィールドのデータ型や特定の要件によってさまざまです。 基本的な演算子や定数が使用される簡単なものもあれば、 関数や特殊な演算子を使用し、フィールド参照が含まれる複雑なものもあります。

このトピックでは、いくつかの汎用的な抽出条件をデータ型ごとに示します。 このトピックの例が特定のニーズに対応しない場合は、抽出条件を自分で記述することが必要な場合もあります。 そのためにはまず、フィールドやリテラルを参照する式のすべての関数、演算子、特殊文字、構文に精通しておく必要があります。 詳細については、参照セクションの記事を参照してください。

まず、抽出条件を追加する場所と方法を説明します。 クエリに抽出条件を追加するには、クエリをデザイン ビューで開く必要があります。 次に、抽出条件を指定するフィールドを特定します。 このフィールドがまだデザイン グリッドにない場合は、このフィールドをクエリ デザイン ウィンドウからフィールド グリッドにドラッグするか、ダブルクリックします (フィールドをダブルクリックすると、フィールド グリッドの次の空の列に自動的に追加されます)。 最後に、[抽出条件] 行に抽出条件を入力します。

[抽出条件] 行でさまざまなフィールドに指定する抽出条件は、AND 演算子を使用して組み合わせることができます。 つまり、"都道府県" フィールドと "生年月日" フィールドで指定した抽出条件は、次のように解釈されます。

都道府県 = "兵庫県" AND 生年月日 < DateAdd (" yyyy ", -40, Date())

市区町村と誕生日に関する抽出条件

1. "都道府県" フィールドと "生年月日" フィールドに抽出条件が含まれます。

2. "都道府県" フィールドの値が "兵庫県" であるレコードのみが、この抽出条件を満たします。

3. 40 才以上の人のレコードのみが、この抽出条件を満たします。

4. 両方の抽出条件を満たすレコードのみが、結果に含まれます。

これらの条件のうち、1 つだけを満たしたい場合はどうなるでしょうか。 つまり、代わりの抽出条件がある場合は、どのように入力すればよいでしょうか。

代わりの抽出条件があるか、2 つの独立した抽出条件があってその 1 つだけを満たせばよい場合は、デザイン グリッドの [抽出条件] と [または] の両方の行を使用します。

代替抽出条件

1. [抽出条件] 行で "都道府県" の抽出条件が指定されています。

2. [または] 行で "生年月日" の抽出条件が指定されています。

次のように、[抽出条件] 行と [または] 行が OR 演算子によって結合されています。

都道府県 = "兵庫県" OR 生年月日 < DateAdd("yyyy", -40, Date())

さらに別の代替条件を指定する必要がある場合は、[または] 行の下にある空の行を使います。

この例を引き続き使用する前に、次の点に注意します。

  • 抽出条件が一時的なものであったり頻繁に変更されたりする場合は、クエリ条件を頻繁に変更する代わりにクエリ結果をフィルタリングできます。 フィルターは、クエリ デザインを変更せずにクエリ結果を変更する一時的な抽出条件です。 フィルターの詳細については、「フィルタ: ビューに表示するレコード数を制限する」を参照してください。

  • 抽出条件のフィールドは変更しないが、対象の値を頻繁に変更する場合は、パラメーター クエリを作成できます。 パラメーター クエリによってフィールド値の入力が求められ、それらの値を使用してクエリ条件が作成されます。 パラメーター クエリの詳細については、「クエリとレポートでパラメータを使用する」の記事を参照してください。

"テキスト型"、"メモ型"、"ハイパーリンク型" のフィールドの抽出条件

次の例は、連絡先情報が保存されているテーブルに基づくクエリの "国または地域" フィールドのものです。 抽出条件は、デザイン グリッドのフィールドの [抽出条件] 行で指定します。

CountryRegion フィールドの抽出条件

"ハイパーリンク型" フィールドで指定する抽出条件は、フィールド値の表示テキスト部分に既定で適用されます。 値の参照先 Uniform Resource Locator (URL) 部分の抽出条件を指定するには、HyperlinkPart 式を使用します。 この式の構文は HyperlinkPart([テーブル 1].[フィールド 1],1) = "http://www.microsoft.com/" です。テーブル 1 はハイパーリンク フィールドが含まれるテーブル名、フィールド 1 はハイパーリンク フィールド、http://www.microsoft.com は照合する URL です。

対象のレコードの内容

使用する抽出条件

クエリ 結果

値 (China など) に完全一致する

"China"

"国または地域" フィールドが China に設定されているレコードが返されます。

値 (Mexico など) に一致しない

Not "Mexico"

"国または地域" フィールドが Mexico 以外に設定されている国/地域のレコードが返されます。

指定した文字列 (U など) で始まる

Like U*

名前が "U" で始まるすべての国/地域 (UK、USA など) のレコードが返されます。

注: 式では、アスタリスク (*) は任意の文字列を表します。これはワイルドカード文字ともいいます。ワイルドカード文字の一覧については、「Access ワイルドカード文字リファレンス」を参照してください。

指定した文字列 (U など) で始まらない

Not Like U*

名前が "U" 以外の文字で始まるすべての国/地域のレコードが返されます。

指定した文字列 (Korea など) を含む

Like &quot;*Korea*&quot;

文字列 "Korea" が含まれるすべての国/地域のレコードが返されます。

指定した文字列 (Korea など) が含まれない

Not Like &quot;*Korea*&quot;

文字列 "Korea" が含まれないすべての国/地域のレコードが返されます。

指定した文字列 ("ina" など) で終わる

Like &quot;*ina&quot;

名前の最後が "ina" であるすべての国/地域 (China や Argentina など) のレコードが返されます。

指定した文字列 ("ina" など) で終わらない

Not Like "*ina"

名前の最後が "ina" でないすべての国/地域 (China や Argentina 以外) のレコードが返されます。

Null 値を含む

Is Null

フィールドに値が含まれないレコードが返されます。

Null 値を含まない

Is Not Null

フィールドに値が含まれるレコードが返されます。

長さ 0 の文字列を含む

"" (引用符のペア)

フィールドの値が (null ではなく) 空白に設定されているレコードが返されます。たとえば、別の部門に対する販売のレコードの "国または地域" フィールドには、空白の値が含まれる場合があります。

長さ 0 の文字列を含まない

Not ""

"国または地域" フィールドが空白の値ではないレコードが返されます。

Null 値または長さ 0 の文字列を含む

"" Or Is Null

フィールドに値がないか、またはフィールドが空白の値に設定されているレコードが返されます。

Null 値でも空白でもない

Is Not Null And Not ""

"国または地域" フィールドが空白の値でも null 値でもないレコードが返されます。

指定した値 (Mexico など) 以降の値を含む (アルファベット順)

>= "Mexico"

アルファベット順で Mexico 以降の、すべての国/地域のレコードが返されます。

指定した範囲内 (A ~ D など) に含まれる

Like "[A-D]*"

名前が "A" ~ "D" の文字で始まる国/地域のレコードが返されます。

2 つの値のうちのどちらか一方 (USA または UK など) に一致する

"USA" Or "UK"

USA と UK のレコードが返されます。

値リストのうちの 1 つの値を含む

In(&quot;France&quot;, &quot;China&quot;, &quot;Germany&quot;, &quot;Japan&quot;)

リスト内で指定したすべての国/地域のレコードが返されます。

フィールド値の指定位置に指定文字を含む

Right([国], 1) = "y"

名前の最後の文字が "y" であるすべての国/地域のレコードが返されます。

長さ要件を満たす

Len([国]) > 10

名前の文字数が 10 文字を超える国/地域のレコードが返されます。

指定パターンに一致する

Like &quot;Chi??&quot;

名前の文字数が 5 文字であり、かつ最初の 3 文字が "Chi" である国/地域 (China や Chile など) のレコードが返されます。

注: ?_ の文字を式で使用する場合は、1 文字を表します。これらの文字は、ワイルドカード文字とも呼ばれます。 文字 _ を、文字 ? や ワイルドカード文字 * が含まれる式で使うことはできません。 ワイルドカード文字 _ を、ワイルドカード文字 % が含まれる式で使うことはできます。

"数値型"、"通貨型"、"オートナンバー型" のフィールドの抽出条件

次の例は、製品情報が保存されているテーブルに基づくクエリの "単価" フィールドのものです。 抽出条件は、クエリ デザイン グリッドのフィールドの [抽出条件] 行で指定します。

単価フィールドの抽出条件

対象のレコードの内容

使用する 抽出条件

クエリ結果

値 (10000 など) に完全一致する

100

製品の単価が $100 のレコードが返されます。

値 (100000 など) に一致しない

Not 100000

製品の単価が $1000 でないレコードが返されます。

指定した値 (10000 など) より小さい値を含む

< 10000
<= 10000

単価が $100 未満 (<100) のレコードが返されます。2 番目の式 (<=100) では、単価が $100 以下のレコードが返されます。

指定した値よりも大きい値 (9999 など) を含む

>9999
>=9999

単価が $99.99 (>99.99) を超えるレコードが返されます。2 番目の式では、単価が $99.99 以上のレコードが返されます。

2 つの値のうちのどちらか一方 (2000 または 2500 など) を含む

2000 or 2500

単価が $20 か $25 のレコードが返されます。

値が指定範囲内にある

>4999 and <9999
または
Between 5000 and 10000

単価が $49.99 より大きく $99.99 より小さいレコードが返されます。

値が指定範囲外にある

<5000 or >10000

単価が $50 ~ $100 の範囲外のレコードが返されます。

指定した複数の値のいずれかを含む

In(2000, 2500, 3000)

単価が $20、$25、$30 のいずれかであるレコードが返されます。

指定した数値で終わる値を含む

Like &quot;*499&quot;

単価の末尾に "4.99" が付くレコード ($4.99、$14.99、$24.99 など) が返されます。

注: *% の文字を式で使用する場合は、任意の文字数を表します。これらの文字は、ワイルドカード文字とも呼ばれます。 文字 % を文字 * が含まれる式で使用することはできません。また、ワイルドカード文字 ? が含まれる式で 使用することもできません。 ワイルドカード文字 % を、ワイルドカード文字 _ が含まれる式で使用することはできます。

null 値が含まれる (または値が含まれない)

Is Null

"単価" フィールドに値が入力されていないレコードが返されます。

非 Null 値を含む

Is Not Null

"単価" フィールドに値が含まれているレコードが返されます。

"日付/時刻型" フィールドの抽出条件

次の例は、受注情報が保存されているテーブルに基づくクエリの "受注日" フィールドのものです。 抽出条件は、クエリ デザイン グリッドのフィールドの [抽出条件] 行で指定します。

OrderDate 抽出条件

対象のレコードの内容

使用する抽出条件

クエリ結果

値 (2006/2/2 など) に完全一致する

#2/2/2006#

2006 年 2 月 2 日に実行されたトランザクションのレコードが返されます。 日付の値は必ず # の文字で囲んでください。日付の値とテキスト文字列を区別するためです。

値 (2006/2/2 など) と一致しない

Not #2006/2/2#

2006 年 2 月 2 日以外の日に実行されたトランザクションのレコードが返されます。

特定の日付 (2006/2/2 など) より前の値を含む

< #2006/2/2#

2006 年 2 月 2 日より前に実行されたトランザクションのレコードが返されます。

2006 年 2 月 2 日以前に実行されたトランザクションを表示するには、< 演算子ではなく <= 演算子を使用します。

特定の日付 (2006/2/2 など) より後の値を含む

> #2006/2/2#

2006 年 2 月 2 日より後に実行されたトランザクションのレコードが返されます。

2006 年 2 月 2 日以降に実行されたトランザクションを表示するには、> 演算子ではなく >= 演算子を使用します。

日付範囲内の値を含む

>#2006/2/2# and <#2006/2/4#

2006 年 2 月 2 日と 2006 年 2 月 4 日の間に実行されたトランザクションのレコードが返されます。

Between 演算子を使用して、始めと終わりを含む値の範囲を抽出することもできます。たとえば、Between #2006/2/2# and #2006/2/4# は、>=#2006/2/2# and <=#2006/2/4# と同じです。

範囲外の値を含む

<#2006/2/2# or >#2006/2/4#

2006 年 2 月 2 日より前か 2006 年 2 月 4 日より後に実行されたトランザクションのレコードが返されます。

2 つの値のうちの一方 (2006/2/2 または 2006/2/3 など) を含む

#2006/2/2# or #2006/2/3#

2006 年 2 月 2 日または 2006 年 2 月 3 日以外に実行されたトランザクションのレコードが返されます。

指定した複数の値のいずれかを含む

In (#2006/2/1#, #2006/3/1#, #2006/4/1#)

2006 年 2 月 1 日、2006 年 3 月 1 日、または 2006 年 4 月 1 日に実行されたトランザクションのレコードが返されます。

(年に関係なく) 特定の月 (12 月など) の日付を含む

DatePart("m", [SalesDate]) = 12

(年に関係なく) 12 月に実行されたトランザクションのレコードが返されます。

(年に関係なく) 特定の四半期内 (第 1 四半期など) の日付を含む

DatePart("q", [SalesDate]) = 1

(年に関係なく) 第 1 四半期に実行されたトランザクションのレコードが返されます。

今日の日付を含む

Date()

今日実行されたトランザクションのレコードが返されます。 今日の日付が 2006/2/2 の場合は、"受注日" フィールドが 2006 年 2 月 2 日に設定されているレコードが表示されます。

昨日の日付を含む

Date()-1

今日より前に実行されたトランザクションのレコードが返されます。 今日の日付が 2006/2/2 の場合は、2006 年 2 月 1 日のレコードが表示されます。

明日の日付を含む

Date() + 1

明日に実行されるトランザクションのレコードが返されます。 今日の日付が 2006/2/2 の場合は、2006 年 2 月 3 日のレコードが表示されます。

今週の日付を含む

DatePart("ww", [SalesDate]) = DatePart("ww", Date()) and Year( [SalesDate]) = Year(Date())

今週中に実行されるトランザクションのレコードが返されます。 1 週間は、日曜日から始まり土曜日に終わります。

前の週の日付を含む

Year([SalesDate])* 53 + DatePart("ww", [SalesDate]) = Year(Date())* 53 + DatePart("ww", Date()) - 1

先週に実行されたトランザクションのレコードが返されます。 1 週間は、日曜日から始まり土曜日に終わります。

翌週の日付を含む

Year([SalesDate])* 53+DatePart("ww", [SalesDate]) = Year(Date())* 53+DatePart("ww", Date()) + 1

翌週に実行されるトランザクションのレコードが返されます。 1 週間は、日曜日から始まり土曜日に終わります。

過去 7 日間の日付を含む

Between Date() and Date()-6

過去 7 日間に実行されたトランザクションのレコードが返されます。 今日の日付が 2006/2/2 の場合は、2006 年 1 月 24 日~ 2006 年 2 月 2 日の期間のレコードが表示されます。

今月の日付を含む

Year([SalesDate]) = Year(Now()) And Month([SalesDate]) = Month(Now())

今月のレコードが返されます。 今日の日付が 2006/2/2 の場合は、2006 年 2 月のレコードが表示されます。

先月の日付を含む

Year([SalesDate])* 12 + DatePart("m", [SalesDate]) = Year(Date())* 12 + DatePart("m", Date()) - 1

先月のレコードが返されます。 今日の日付が 2006/2/2 の場合は、2006 年 1 月のレコードが表示されます。

翌月の日付を含む

Year([SalesDate])* 12 + DatePart("m", [SalesDate]) = Year(Date())* 12 + DatePart("m", Date()) + 1

翌月のレコードが返されます。 今日の日付が 2006/2/2 の場合は、2006 年 3 月のレコードが表示されます。

過去 30 日間または 31 日間の日付を含む

Between Date( ) And DateAdd("M", -1, Date( ))

1 か月の売り上げレコードです。 今日の日付が 2006/2/2 の場合は、2006 年 1 月 2 日~ 2012 年 2 月 2 日の レコードが表示されます。

現在の四半期の日付を含む

Year([SalesDate]) = Year(Now()) And DatePart("q", Date()) = DatePart("q", Now())

現在の四半期のレコードが返されます。今日の日付が 2006/2/2 の場合は、2006 年の第 1 四半期のレコードが表示されます。

前の四半期の日付を含む

Year([SalesDate])*4+DatePart("q",[SalesDate]) = Year(Date())*4+DatePart("q",Date())- 1

前の四半期のレコードが返されます。今日の日付が 2006/2/2 の場合は、2005 年の第 4 四半期のレコードが表示されます。

次の四半期の日付を含む

Year([SalesDate])*4+DatePart("q",[SalesDate]) = Year(Date())*4+DatePart("q",Date())+1

次の四半期のレコードが返されます。今日の日付が 2006/2/2 の場合は、2006 年の第 2 四半期のレコードが表示されます。

今年の日付を含む

Year([SalesDate]) = Year(Date())

今年のレコードが返されます。 今日の日付が 2006/2/2 の場合は、2006 年のレコードが表示されます。

昨年の日付を含む

Year([SalesDate]) = Year(Date()) - 1

昨年に実行されたトランザクションのレコードが返されます。 今日の日付が 2006/2/2 の場合は、2005 年のレコードが表示されます。

来年の日付が含まれる

Year([SalesDate]) = Year(Date()) + 1

来年の日付のトランザクションのレコードが返されます。 今日の日付が 2006/2/2 の場合は、2007 年のレコードが表示されます。

1 月 1 日~今日までの日付を含む (年初から今日までのレコード)

Year([SalesDate]) = Year(Date()) and Month([SalesDate]) <= Month(Date()) and Day([SalesDate]) <= Day (Date())

今年の 1 月 1 日から今日までの日付のトランザクションのレコードが返されます。 今日の日付が 2006/2/2 の場合は、2006 年 1 月 1 日~ 2006 年 2 月 2 日のレコードが表示されます。

過去の日付を含む

< Date()

今日より前に実行されたトランザクションのレコードが返されます。

未来の日付を含む

> Date()

今日より後に実行されるトランザクションのレコードが返されます。

null (または空) 値をフィルターで抽出する

Is Null

トランザクションの日付がないレコードが返されます。

非 null 値をフィルターで抽出する

Is Not Null

トランザクションの日付がわかっているレコードが返されます。

その他のフィールドの抽出条件

[はい] と [いいえ] のフィールド    チェック ボックスがオンのレコードを含めるには、[抽出条件] 行に「はい」と入力します。 チェック ボックスがオフのレコードを含めるには、「いいえ」と入力します。

添付ファイル   添付ファイルが含まれないレコードを含めるには、[抽出条件] 行に「Is Null」と入力します。 添付ファイルが含まれるレコードを含めるには、「Is Not Null」と入力します。

ルックアップ フィールド    ルックアップ フィールドには、(外部キーを使って) 既存のデータ ソースの値を検索するものと、ルックアップ フィールドの作成時に指定した値のリストに基づくものの 2 種類があります。

指定した値のリストに基づくルックアップ フィールドのデータ型はテキストであり、有効な抽出条件は他のテキスト フィールドと同じです。

既存のデータソースの値に基づいてルックアップ フィールドで使用できる抽出条件は、検索対象データのデータ型ではなく、外部キーのデータ型によって決まります。 たとえば、"従業員名" が表示されているルックアップ フィールドがあるが、データ型が "数値型" の外部キーを使っているとします。 このフィールドにはテキストではなく数値が保存されるため、数値に使用できる抽出条件 (>2) を使用します。

外部キーのデータ型が不明の場合は、デザイン ビューでソース テーブルを調べて、フィールドのデータ型を特定できます。 次の操作を行います。

  1. ナビゲーション ウィンドウでソース テーブルを見つけます。

  2. 次のいずれかの方法で、デザイン ビューでテーブルを開きます。

    • テーブルをクリックして Ctrl + Enter を押します。

    • テーブル名を右クリックし、[デザイン ビュー] をクリックします。

  3. 各フィールドのデータ型は、テーブル デザイン グリッドの [データ型] 列に表示されます。

複数値を持つフィールド   複数値を持つフィールドのデータは、非表示のテーブルの行として保存されます。このテーブルは、フィールドを表すために Office Access 2007 で作成および設定されるものです。 クエリ デザイン ビューでは、このフィールドは展開可能フィールドを使って [フィールド リスト] に表示されます。 複数値を持つフィールドで抽出条件を使用するには、非表示のテーブルの 1 行の抽出条件を入力します。 次の操作を行います。

  1. 複数値を持つフィールドが含まれるクエリを作成して、デザイン ビューで開きます。

  2. 複数値を持つフィールドの横にある正符号 (+) をクリックして、このフィールドを開きます。フィールドがすでに展開されている場合、これは負符号 (-) です。 フィールド名のすぐ下に、複数値を持つフィールドの単一の値が表示されているフィールドがあります。 このフィールドの名前は、複数値を持つフィールドの名前に .Value という文字列が付いたものです。

  3. 複数値を持つフィールドとその単一値フィールドを、デザイン グリッドの別の列にドラッグします。 複数値を持つフィールドの全体のみを結果に表示したい場合は、単一値フィールドの [表示] チェックボックスをオフにします。

  4. 値が示すデータ型に合った抽出条件を使用して、単一値フィールドの [抽出条件] 行に抽出条件を入力します。

  5. 複数値を持つフィールドの値は、入力する抽出条件を使ってそれぞれ個別に評価されます。 たとえば、数値リストが保存されている複数値を持つフィールドがあるとします。 「>5 AND <3」という抽出条件を入力すると、5 より大きい値 3 より小さい値がそれぞれ 1 つ以上含まれるレコードが一致します。

この情報は役に立ちましたか?

どのようにしたら改善できるでしょうか?

どのようにしたら改善できるでしょうか?

お客様のプライバシーを保護するため、フィードバックには連絡先情報を含めないでください。 レビューしてください プライバシー ポリシー

ご意見をいただきありがとうございます。