クエリにおけるさまざまなデータの抽出条件

 先の節では、1つの数値型の列に対して1つの単純な条件を与えることでデータを抽出する例を見てきましたが、データ型に応じて条件の表し方は異なります。また、複数の条件を設けたり、「あ行から始まる文字列」といったマッチングによる検索を行ったり、複数の列を比較するような条件を設けるを行うことが可能ですので、ここではこうしたさまざまな抽出の仕方を見ていきます。

f:id:accs2014:20161002002032p:plain:right:w600

 なお、サンプルとしてこのようなテーブルを用いるものとします。


データ型に応じた抽出条件

数値型の抽出条件

f:id:accs2014:20161002002031p:plain:right:w600

 先の例でも同じような抽出を行いましたが、数値型の列である「知恵」列に対して抽出条件を設けます。
 該当する列の「抽出条件」の欄に「>=14」と記入します。このように、数値型のデータに対し条件を設ける場合は単純に「9」(9に等しい。「=9」としても同じですが、「=」はクエリを開きなしたときに消えてしまいますので意味がありません)、あるいは「<>15」(15でない)といったように指定すればOKです。


f:id:accs2014:20161002002030p:plain:right:w600

 データシートビューです。
 「知恵」の値が14以上である者が抽出されています。


テキスト型の抽出条件

f:id:accs2014:20161002004241p:plain:right:w600

 テキスト型(短いテキスト型)である「出身地」列に対して抽出条件を設ける例です。
 「抽出条件」の欄に「"東京都"」と記入します。このように、テキスト型のデータに対して条件を設ける場合は、その値を「"」で囲みます。


f:id:accs2014:20161002004239p:plain:right:w600

 データシートビューです。


日付/時刻型の抽出条件

f:id:accs2014:20161002004856p:plain:right:w600

 日付/時刻型の列である「生年月日」列に対して抽出条件を設ける例です。
 「抽出条件」の欄に「>=#2001/04/01#」と記入します。これにより生年月日が2001年4月1日以降である者が抽出されます。
 このように、日付/時刻のデータに対して条件を設ける場合は、その値を「#」で囲みます。


f:id:accs2014:20161002004854p:plain:right:w600

 データシートビューです。


Yes/No型の抽出条件


f:id:accs2014:20161002010038p:plain:right:w600

 Yes/no型の列である「普通免許」列に対して抽出条件を設ける例です。
 「抽出条件」の欄に「Yes」と記入します。このように、Yes/No型のデータに対して条件を設ける場合は「Yes」または「No」と記入します。「Yes」の代わりに「True」や「On」とし、また「No」の代わりに「False」や「Off」とすることもできます。

f:id:accs2014:20161002010037p:plain:right:w600

 データシートビューです。


Nullの抽出

Nullを抽出できる抽出条件

f:id:accs2014:20161002205940p:plain:right:w600

 値が存在しないことを表すNullの抽出についてです。方法を知らないとかなり困りますので注意が必要です。
 ここでは「知恵」の値がNullである者を抽出しますが、「抽出条件」欄に「Is Null」と記入すればOKです。データ型に関わらず、このように記入することで値がNullである行を抽出できます。また、Nullでないことを条件とする場合は「Is Not Null」とします。


f:id:accs2014:20161002205939p:plain:right:w600

 データシートビューです。


Nullを抽出できない抽出条件

f:id:accs2014:20170819065752p:plain:right:w600

 補足になりますが、Nullを(他の値と共に)抽出しようとして失敗するケースについてです。
 数値型である「知恵」列の「抽出条件」欄に「<=11」と記入します。Nullが数値の0と同一視されるのであれば抽出されそうですが…


f:id:accs2014:20170819065749p:plain:right:w600

 そうはいかず、「知恵」がNullの者(会員番号8)は抽出されません。


f:id:accs2014:20170819065745p:plain:right:w600

 次のケースです。
 下記の内容(Or条件)の先取りになりますが、「知恵」列の「抽出条件」欄に「11 Or <>11」と記入します。
 あらゆる値は「11である」か「11ではない」のどちらかなのだから、すべてのレコードが抽出されるはず、と思われるかもしれません。しかし…


f:id:accs2014:20170819065740p:plain:right:w600

 やはり「知恵」がNullの者(会員番号8)は抽出されません。
 このように、Nullは具体的な値との比較により抽出することはできず、上記のように「Is Null」と明示的に指定するしかありません。この点は見落としがちなので特に注意が必要です。ちなみに下記で紹介するIn演算子を使って「In (Null)」とやってもやはり抽出できません。

 なお、以上では数値型での例を見てみましたが、テキスト型の列の場合に「""」とか「"山田 太郎" Or <>"山田 太郎"」などと記入しても、やはりNullは抽出できません。


より複雑な抽出条件の記し方

And条件による抽出

 複数の条件のすべてを満たす行を抽出しようとする例です。
 さらに細かく見ると、1つの列について複数の条件を設ける場合と、複数の列にそれぞれ条件を設ける場合があります。

f:id:accs2014:20161002212252p:plain:right:w600

 まず、1つの列について複数の条件を設ける場合の例です。
 「知恵」列の「抽出条件」欄に「>=11 And <=15」と記入します。これにより、知恵が11以上であり、かつ15以下である行が抽出されます。


f:id:accs2014:20161002212250p:plain:right:w600

 データシートビューです。


f:id:accs2014:20161002212249p:plain:right:w600

 次に、複数の列にそれぞれ条件を設ける場合の例です。
 「出身地」列の「抽出条件」欄に「"新潟県"」と記入し、「知恵」列の「抽出条件」欄に「11」と記入します。これにより、出身地が新潟県であり、かつ知恵が11である行が抽出されます。
 このように、それぞれの「抽出条件」欄に条件を記入していけば、それらのすべてを満たす行が抽出されます。


f:id:accs2014:20161002212248p:plain:right:w600

 データシートビューです。


Or条件による抽出

 複数の条件のいずれか(少なくとも一つ)を満たす行を抽出しようとする例です。
 さらに細かく見ると、1つの列について複数の条件を設ける場合と、複数の列にそれぞれ条件を設ける場合があります。

f:id:accs2014:20161002213329p:plain:right:w600

 まず、1つの列について複数の条件を設ける場合の例です。
 「知恵」列の「抽出条件」欄に「<=10 Or >=15」と記入します。これにより、知恵が10以下であるか、または15以上であるかのいずれかを満たす者が抽出されます。


f:id:accs2014:20161002213328p:plain:right:w600

 データシートビューです。


f:id:accs2014:20161002213326p:plain:right:w600

 次に、複数の列にそれぞれ条件を設ける場合の例です。
 「出身地」列の「抽出条件」欄に「"東京都"」と記入し、「知恵」列の「または」欄(「抽出条件」欄の1段下)に「9」と記入します。これにより、出身地が新潟県であるか、または知恵が9であるか、いずれかの条件を満たす行が抽出されます。
 このように、それぞれの「抽出条件」と「または」欄に条件を記入すれば、いずれか少なくとも1つの条件を満たす行が抽出されます。
 なお、さらに条件を増やす場合は「または」欄のさらに下の行に条件を記入していきます。


f:id:accs2014:20161002213325p:plain:right:w600

 データシートビューです。
 条件のいずれかを満たした列が抽出されています。


And条件とOr条件の併用

f:id:accs2014:20161005234502p:plain:right:w600

  Andによる条件とOrによる条件を組み合わせる例です。慣れないと解釈を間違えやすいので注意が必要です。
 例として「出身地」の「抽出条件」に「"東京都"」と記入し、「力」の「抽出条件」に「11」と記入します。さらに「出身地」の「または」に「"新潟県"」と記入し、「知恵」の抽出条件に「14」と記入します。
 これは全体として「『出身地が東京都であり、かつ、力が11である』か、または『出身地が新潟県であり、かつ、知恵が14である』かのいずれかを満たす」という条件を表しています。


f:id:accs2014:20161005234501p:plain:right:w600

 データシートビューです。


Between演算子の利用

f:id:accs2014:20161005234500p:plain:right:w600

 Between演算子を用いることにより、一定の範囲を表す条件を課すことができます。通常は数値型の列や日付/時刻型の列に対して用いられます。
 例として「素早さ」の「抽出条件」に「Between 12 And 14」と記入します。これにより素早さの値が12から14までの間である者が抽出されます。


f:id:accs2014:20161005234459p:plain:right:w600

 データシートビューです。


In演算子の利用

f:id:accs2014:20161005234530p:plain:right:w600

 In演算子を用いることにより、指定した値のいずれかに該当する、という条件を課すことができます。
 例として「出身地」の「抽出条件」に「In ("東京都","群馬県","和歌山県")」と記入します。これにより、これら3都県の出身者を抽出することができます。Orや「または」をたくさん使うような場合に記述を簡単にすることができます。


f:id:accs2014:20161005234529p:plain:right:w600

 データシートビューです。


Like演算子の利用

f:id:accs2014:20161010004545p:plain:right:w600

 Like演算子を用いることで、特定の文字で始まる(終わる)文字列や特定の文字を含む文字列を抽出することができます。
 例として「出身地」の「抽出条件」に「Like "*県"」と記入します。「*」は0文字以上の文字を表すワイルドカードですので、これにより「県」で終わる文字列を抽出することができます。つまり、あらゆる県の出身者を抽出することができます。


f:id:accs2014:20161010004548p:plain:right:w600

 データシートビューです。
 なお、「Like "福*"」とすれば「福」で始まる文字列を、「Like "*山*"」とすれば「山」を含む(最初でも途中でも最後でも構いません)文字列を抽出することができます。


f:id:accs2014:20161010004549p:plain:right:w600

 次に、同じく「Like "??県"」と記入してみます。「?」は1つの文字を表すワイルドカードですので、これにより県名が(「県」を除いて)2文字である県を抽出することができます。つまり、神奈川県、和歌山県、鹿児島県を除く県の出身者を抽出することができます。


f:id:accs2014:20161010004544p:plain:right:w600

 データシートビューです。
 なお、「Like "福??"」とすれば「福」で始まる3文字の文字列を、「Like "?山?"」とすれば「山」を2文字目に含む3文字の文字列を抽出することができます。


 このほかにも、数字1文字を表すワイルドカード「#」や、何種類かの文字の集まりを表わす「[]」(角カッコ)などを使ってさまざまな条件で抽出を行うことができます。
 詳細については長い内容となりますので、次の記事を参照ください。

www.accessdbstudy.net


関数の利用

f:id:accs2014:20161010004542p:plain:right:w600

 抽出条件に関数を利用することもできます。
 例として「生年月日」の「抽出条件」に「<=Date()-5000」と記入します。Date関数はシステムの日付(通常は今日)を表す関数であり、-5000というのは(日付型のデータにおいては)5000日前を表します。つまり、今日から5000日前の日以前に生まれた者を抽出することができます。


f:id:accs2014:20161010004634p:plain:right:w600

 データシートビューです。


他の列の参照

f:id:accs2014:20161010004633p:plain:right:w600

 抽出条件として特定の値を与えるだけでなく、他の列の値との比較を行うことができます。
 例として「知恵」の「抽出条件」に「>[力]」と記入します。これにより「知恵」の値が「力」より大きい者を抽出することができます。
 このように、他の列の値を指定するときは「[]」(角カッコ)で囲みます。


f:id:accs2014:20161010004632p:plain:right:w600

 データシートビューです。