Access。クエリで住所を都道府県とそれ以降に分割するには
<都道府県分割>
Accessで住所録などを作るときには、都道府県や市区町村をそれぞれフィールドにわけてテーブルをつくるほうが、
あとでの管理や運営からみて、使い勝手がよくなるし、
テーブル作成からはじめた場合は、住所入力支援ウィザードをつかうことで、
郵便番号を入力するだけで、都道府県や市区町村をそれぞれフィールドにわけて、
住所入力も、容易になるのですが、
すでに、一つのフィールドに、都道府県も含めて住所が入っていた場合、
どうやって分割したらいいのでしょうか?
基本的には、Excelで処理する場合と同じで、
47都道府県のうち、神奈川県・和歌山県・鹿児島県の3県だけが
4文字目に"県"がありますので、
左から4文字目が【県】なのかどうかを判断させるようにすれば、
分割抽出できるというわけです。
【都道府県を抽出】
では、次のテーブルがあります。このT珈琲販売店一覧の住所フィールドを
都道府県とそれ以降にわけるクエリを作成していきます。
作成タブのクエリデザインを使って、フィールドを設定していきます。
フィールドに、店舗IDと販売店名と住所を設定してみると、次のようになります。
この住所フィールドのとなりに、都道府県フィールドを追加してみましょう。
データシートビューで確認してみましょう。
都道府県を抽出するが出来ましたね。
では、都道府県フィールドの説明です。
都道府県: IIf(Mid([住所],4,1)="県",Left([住所],4),Left([住所],3))
IIfは、ExcelのIF関数と同じですので、Mid([住所],4,1)="県"。
つまり、住所フィールドの4文字目の1文字は「県」ですか?という論理式です。
そして、真の場合が、Left([住所],4)。4文字目が「県」だったら、
住所フィールドの左から4文字を抽出。
偽の場合が、Left([住所],3)。そうじゃなければ、
住所フィールドの左から3文字を抽出するという意味になります。
考え方も作り方もExcelと同じですね。
【都道府県以降を抽出】
都道府県を抽出できましたので、今後は、それ以降を抽出していきましょう。デザインビューに戻して、住所フィールドが存在しているので、
住所1フィールドを都道府県以降として作っていきます。
住所1: IIf(Mid([住所],4,1)="県",Mid([住所],5),Mid([住所],4))
基本的な考え方は、先程の都道府県と同じで、
住所フィールドの4文字目が「県」かどうかを確認するために、IIf関数を使います。
そして、真の場合。
つまり「県」だったら、Mid([住所],5)。
住所フィールドの5文字目以降を抽出して、
偽の場合だったら、Mid([住所],4)。
住所フィールドの4文字目以降を抽出するという処理をさせています。
AccessのMid関数は、
Mid(文字列,開始位置,文字数)という引数をもっていて、
文字数を省略すると、開始位置以降の文字全部を抽出することが出来ます。
AccessのMid関数はExcelのMid関数よりも使い勝手がいいように感じますね。
では、データシートビューで確認してみましょう。
このように処理する事で、
都道府県とそれ以降に分割抽出することが出来ましたね。
とはいえ、最初から分割しておくといいのは、間違いないところですかね。