- ベストアンサー
住所から市町村名を取り出す
access2003 Win-XP 住所禄の住所の項目があります。その住所から市町村名を取り出す。 住所 市町村名 ○○県XX市 XX市 ○○県△△市 △△市 □□県**市 **市 こんな感じで、クエリでできるでしょうか? 取り出す市町村名は、特定の限定した町村で、それ以外は無しでいいです。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
途中から失礼します。 特定の5市町村なら、Switch関数でいいかと。 例えば、 > 住所 市町村名 > ○○県XX市 XX市 > ○○県△△市 △△市 > □□県**市 **市 で、それ以外は、その他なら、クエリのフィールドに下記の式を設定すればいいでしょう。 市町村名: Switch([住所]="○○県XX市","XX市",[住所]="○○県△△市","△△市",[住所]="□□県**市","**市",True,"その他") 市町村以降の住所(地番等)も入力されているなら、Like演算子を使って、 市町村名: Switch([住所] Like "○○県XX市*","XX市",・・・・) 市区町村がもっと多かったり、抽出対象の変更がたびたびあるなら、 下記のような変換テーブルを作成して、 住所変換 元住所 市町村名 ----------------------- ○○県XX市 XX市 ○○県△△市 △△市 □□県**市 **市 ・・・・・ ・・・ クエリのフィールドに下記のように設定します。 市町村名: Nz(DLookup("市町村名","住所変換","'" & [住所] & "' Like [元住所] & '*'"),"その他")
その他の回答 (4)
- nicotinism
- ベストアンサー率70% (1019/1452)
実験環境でうまく動かなかったのでしょうか。 それとも、そちらの本番環境でのお話? そちらで作成した SQL文とエラーの内容とテーブルのフィールド名も載せてください。 東区・北区はある意味で良い(悪い)例でした。 台東区・江東区・港北区・・・などもヒットしてしまいますね。。すみません。 実際の5市町村名は何かも教えてもらえますか。 その内容によっては最初のZipConv関数を利用せざるを得ないかもしれない。 Access2003なら多分動くのでは?その場合は クエリのフィールド欄に 市町村:zipconv([住所],zcCty1) として、試してみてください。 うまく行ったら、抽出条件欄にその市町村名です。 番地表示以下は適当に存在しない値にして実際にどのような住所なのか 二三例も欲しいような気もします。 とりあえず、ここまで。
- nicotinism
- ベストアンサー率70% (1019/1452)
5市区町村だけが対象でしたら地道にやってもいいかな。 下記は北区と東区を対象にした場合です。 参考にして五市区町村を加えてください。 ユニオンクエリですのでクエリをデザインビューではなく、SQLビューで開いて編集をします。 SELECT 住所,"北区"as 市区町村 FROM 住所録 WHERE 住所 Like '*北区*' union all SELECT 住所,"東区"as 市区町村 FROM 住所録 WHERE 住所 Like '*東区*' union all SELECT 住所, "その他" AS 市区町村 FROM 住所録 WHERE Not 住所 Like '*東区*' Or 住所 Like '*北区*'; ※同名の市区町村が他都道府県にもある場合は×です。 ご参考までに。
お礼
ありがとうございます。 SELECT 住所, "その他" AS 市区町村 FROM 住所録 WHERE Not 住所 Like '*東区*' Or 住所 Like '*北区*'; の部分ですが、うまくできません。 構文を今一度教えてください。
- o_chi_chi
- ベストアンサー率45% (131/287)
住所には番地は入力されていないのでしょうか それなら簡単です。("県"のみが前提) --- select 住所 ,mid([住所], InStr([住所], "県") + 1) as 市町村名 from 住所禄
- nicotinism
- ベストアンサー率70% (1019/1452)
三重県四日市市や千葉県市川市、長野県大町市などがありますので 『市町村』を頼りには抽出できない場合があります。 特定の市町村が少なければ、クエリの抽出条件に Like *○○市* like *▽*市 などと連ねて行けば出来るかも。 市町村名だけを抜き出す場合は冒頭の例が有りますので難しいと思います。 YU-TANG さんが解説されている、ZipConv 関数が使えるかと思います。 http://www.f3.dion.ne.jp/~element/msaccess/AcTipsZipConv.html
お礼
ありがとうございます。 住所の中に特定の市町村(5町村、それ以外は「他」)という感じで集計することが目的です。 Iff関数などの利用を考えたのですが
お礼
ありがとうございました。 思い通りにできました。感謝します。