dポイントプレゼントキャンペーン実施中!

access2003 Win-XP

住所禄の住所の項目があります。その住所から市町村名を取り出す。

住所           市町村名
○○県XX市      XX市
○○県△△市    △△市
□□県**市    **市

こんな感じで、クエリでできるでしょうか?
取り出す市町村名は、特定の限定した町村で、それ以外は無しでいいです。

A 回答 (5件)

途中から失礼します。



特定の5市町村なら、Switch関数でいいかと。
例えば、

> 住所           市町村名
> ○○県XX市      XX市
> ○○県△△市    △△市
> □□県**市    **市

で、それ以外は、その他なら、クエリのフィールドに下記の式を設定すればいいでしょう。

市町村名: Switch([住所]="○○県XX市","XX市",[住所]="○○県△△市","△△市",[住所]="□□県**市","**市",True,"その他")

市町村以降の住所(地番等)も入力されているなら、Like演算子を使って、

市町村名: Switch([住所] Like "○○県XX市*","XX市",・・・・)

市区町村がもっと多かったり、抽出対象の変更がたびたびあるなら、
下記のような変換テーブルを作成して、

住所変換
元住所    市町村名
-----------------------
○○県XX市 XX市
○○県△△市 △△市
□□県**市 **市
・・・・・  ・・・

クエリのフィールドに下記のように設定します。

市町村名: Nz(DLookup("市町村名","住所変換","'" & [住所] & "' Like [元住所] & '*'"),"その他")
    • good
    • 0
この回答へのお礼

ありがとうございました。

思い通りにできました。感謝します。

お礼日時:2012/01/07 10:00

実験環境でうまく動かなかったのでしょうか。


それとも、そちらの本番環境でのお話?
そちらで作成した
SQL文とエラーの内容とテーブルのフィールド名も載せてください。

東区・北区はある意味で良い(悪い)例でした。
台東区・江東区・港北区・・・などもヒットしてしまいますね。。すみません。
実際の5市町村名は何かも教えてもらえますか。
その内容によっては最初のZipConv関数を利用せざるを得ないかもしれない。

Access2003なら多分動くのでは?その場合は
クエリのフィールド欄に
市町村:zipconv([住所],zcCty1) として、試してみてください。
うまく行ったら、抽出条件欄にその市町村名です。
番地表示以下は適当に存在しない値にして実際にどのような住所なのか
二三例も欲しいような気もします。
とりあえず、ここまで。
    • good
    • 0

5市区町村だけが対象でしたら地道にやってもいいかな。


下記は北区と東区を対象にした場合です。
参考にして五市区町村を加えてください。
ユニオンクエリですのでクエリをデザインビューではなく、SQLビューで開いて編集をします。

SELECT 住所,"北区"as 市区町村
FROM 住所録
WHERE 住所 Like '*北区*'
union all
SELECT 住所,"東区"as 市区町村
FROM 住所録
WHERE 住所 Like '*東区*'
union all
SELECT 住所, "その他" AS 市区町村
FROM 住所録
WHERE Not 住所 Like '*東区*' Or 住所 Like '*北区*';

※同名の市区町村が他都道府県にもある場合は×です。
ご参考までに。
    • good
    • 0
この回答へのお礼

ありがとうございます。

SELECT 住所, "その他" AS 市区町村
FROM 住所録
WHERE Not 住所 Like '*東区*' Or 住所 Like '*北区*';

の部分ですが、うまくできません。
構文を今一度教えてください。

お礼日時:2012/01/06 19:25

住所には番地は入力されていないのでしょうか



それなら簡単です。("県"のみが前提)
---
select
住所
,mid([住所], InStr([住所], "県") + 1) as 市町村名
from 住所禄
    • good
    • 0

三重県四日市市や千葉県市川市、長野県大町市などがありますので


『市町村』を頼りには抽出できない場合があります。
特定の市町村が少なければ、クエリの抽出条件に
Like *○○市*
like *▽*市
などと連ねて行けば出来るかも。

市町村名だけを抜き出す場合は冒頭の例が有りますので難しいと思います。
YU-TANG さんが解説されている、ZipConv 関数が使えるかと思います。
http://www.f3.dion.ne.jp/~element/msaccess/AcTip …
    • good
    • 0
この回答へのお礼

ありがとうございます。
住所の中に特定の市町村(5町村、それ以外は「他」)という感じで集計することが目的です。

Iff関数などの利用を考えたのですが

お礼日時:2012/01/06 10:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!