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

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

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

 なお、ここでは右のようなテーブルを用いるものとします。


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

数値型の抽出条件

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

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


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

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


テキスト型の抽出条件

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

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


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

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


日付/時刻型の抽出条件

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

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


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

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


Yes/No型の抽出条件



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

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

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

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


Nullの抽出

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

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


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

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


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

And条件による抽出

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

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

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


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

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


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

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


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

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


Or条件による抽出

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

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

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


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

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


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

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


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

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


And条件とOr条件の併用

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

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


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

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


Between演算子の利用

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

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


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

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


In演算子の利用

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

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


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

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


Like演算子の利用

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

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


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

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


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

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


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

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


 さて、Like演算子では否定として「Not」を用いることができます。「Not Like "福*"」とすれば、「『福』で始まる文字列」以外の文字列を抽出することができますし、「Not Like "福??"」とすれば「『福』で始まる3文字の文字列」以外の文字列を抽出することができます。
 また、角カッコ([])を利用することで文字の範囲を指定することができます。「Like "[あ-お]*"」とすれば、「最初の1文字が『あ』~『お』のいずれかで始まる文字列」を抽出することができますし、「Like "?[あ-お]?"」とすれば「2文字目が『あ』~『お』のいずれかである3文字の文字列」を抽出することができます。
 さらに、「!」を用いて「範囲外」を指定することもできます。「Like "[!あ-お]*"」とすれば「最初の1文字が『あ』~『お』のいずれでもない文字列」を抽出でき、「Like "?[!あ-お]?"」とすれば「2文字目が『あ』~『お』のいずれでもない3文字の文字列」を抽出できます。
 ちょっとややこしくなりますが「Not」と「!」を同一視してはいけません。「Not Like "?[あ-お]?"」により抽出される文字列は3文字とは限りませんが、「Like "?[!あ-お]?"」により抽出される文字列は必ず3文字です。

関数の利用

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

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


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

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


他の列の参照

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

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


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

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