【1】Accessのファイル「クエリ練習.mdb」を起動します。
【2】オブジェクトで「クエリ」を選択します。
【3】「Q03抽出クエリ」を選択し、「デザイン」をクリックします。
【4】クエリのデザインビューが開きました。
【5】はじめにデータシートビューでどんなレコードがあるか確認します。今回は文字で抽出しますので、食品名と分類名に注目してください。
【6】分類名の 抽出条件: に「"野菜"」と入力します。文字列は「"」ダブルクォーテーションで囲むのがポイントです。
【7】データシートビューで確認すると、分類名が野菜のレコードが抽出されています。
【8】分類名の 抽出条件: に「'野菜'」と入力します。今度は「'」シングルクォーテーションで囲んでいます。
【9】先ほどと同じ結果になりました。
*Accessでは文字列は「"」ダブルクォーテーションか「'」シングルクォーテーションで囲みます。しかしAccessを他のプログラミング言語からSQLを使って操作するときに、ダブルクォーテーションだと上手く動かないことがあります。
【10】食品名の 抽出条件: に「'ン'」と入力します。
【11】何もレコードが表示されません。「ン」という文字列と完全に一致するレコードがないためです。
【12】あいまいな抽出にはLikeを使います。食品名の 抽出条件: に「Like '*ン'」と入力します。
【13】データシートビューで確認すると、食品名が「ン」で終わるレコードが抽出されています。
でもリンゴやサンマは抽出されていませんね。「*」アスタリスクは任意の0文字以上を意味しますので、ン、○○ン、○○○○ンなど最後がンで終わる文字列はOKですが、○ン○のように途中にある形はダメです。
【14】食品名の 抽出条件: に「Like '*ン*'」と入力します。
【15】データシートビューで確認すると今度はリンゴやサンマも抽出されています。
「*」アスタリスクは任意の0文字以上ですので、ン○○、○○ン、○ン○、の形でもよいわけです。
【16】食品名の 抽出条件: に「Like '*ン?'」と入力します。
【17】データシートビューで確認するとリンゴやサンマが抽出されています。
「?」は任意の1文字を意味しますので、○○ン○のように必ず「ン」の後にもう1文字ある形でなければなりません。なのでニンジンは表示されません。
【18】では食品名の 抽出条件: に「Like 'サ?'」と入力するとどうなるでしょうか?
【19】データシートビューで確認するとサバが抽出されています。
サの後に任意の1文字なのでサンマは表示されません。
【20】食品名の 抽出条件: に「Like 'サ*'」と入力するとどうなるでしょうか?
【21】今度はサンマも表示されました。
【22】食品名の 抽出条件: に「Like '*サ*'」と入力するとどうなるでしょうか?
【23】同じように表示されます。アスタリスクは0文字以上なので、サの前には文字がなくてもかまわないわけです。
【24】「Q03抽出クエリ」はまた使いますので、保存しないで閉じてください。
【まとめ】
・あいまいな抽出にはLikeを使う。
・*は任意の0文字以上。
・?は任意の1文字。
Accessの基本を短期間で学べるように工夫しています。リレーショナルデータベースの考え方が理解できます。
