過去の桐井戸端BBS (桐ver.8)
16382 住所データの中で県名のみを削除したい toru 2002/06/21-19:33
顧客データを管理してます。
住所項目の中に”都道府県”があります。
つまり、東京都港区赤坂1−1−1・・・の場合の
”東京都”を自動で削除したいのですが!
因みに、住所データ件数が10万件近くあるので、
#S([住所],"東京都","")では、47回の作業になります。
何とかいっぺんに出来ないのもでしょうか?

16383 Re:住所データの中の県名削除 うにん 2002/06/21-20:19
記事番号16382へのコメント
>因みに、住所データ件数が10万件近くあるので、
>#S([住所],"東京都","")では、47回の作業になります。
>何とかいっぺんに出来ないのもでしょうか?

一括処理でやればど〜ってことないと思いますが。
それより、上記の式では万一「東京都営住宅」とかいった文字があったら削除されてしまいます。
都道府県名が「必ず」入っているなら、#部分列([住所],4)してから
「県」ではじまる行だけ絞り込んでもういちど#部分列([住所],2)すればいいのでは?
これなら3回の作業です:-)

16384 Re:住所データの中の県名削除 今村 誠 2002/06/21-21:14
記事番号16383へのコメント
TORUさん、うにんさんこんばんは、
>それより、上記の式では万一「東京都営住宅」とかいった文字があったら削除さ
>れてしまいます。
>都道府県名が「必ず」入っているなら、#部分列([住所],4)してから
>「県」ではじまる行だけ絞り込んでもういちど#部分列([住所],2)すればいいので
>は?これなら3回の作業です:-)

#計算(#代入(&STR,#部分列([住所],1,4)),#代入(&STR,#S(&STR,"東京都",""))
,#代入(&STR,#S(&STR,"北海道","")),#代入(&STR,#S(&STR,"京都府",""))
,#代入(&STR,#S(&STR,"大阪府","")),#代入(&STR,#S(&STR,"愛知県",""))
,#代入(&STR,&STR+#部分列([住所],5)))

上の言葉を式に直すと上記のような式で置換か項目計算式でできそうです。
真ん中の2行を県の名前分増やすとうまくいくようです。
上の5つの都道府県では検証しました。
文字数も2000文字以内に収まりそうです。
根気が一番!!

16387 Re:住所データの中の県名削除 natsu 2002/06/21-23:03
記事番号16382へのコメント
まず、都道府県の一覧表を作りましょう
たとえば、検索エンジンで都道府県と入れると
いろいろなパターンの一覧表を入手できますが
http://www.fujifilm.co.jp/matsuri/url.html
ここにある表をコピーしてテキストファイルに保存しましょう
以下のように貼り付けられます

北 海 道
 
http://www.pref.hokkaido.jp/

青 森 県
 
http://www.pref.aomori.jp/

岩 手 県
 
http://www.office.pref.iwate.jp/

以下沖縄県まで繰り返し・・・・

テキストファイルは、こんな感じで並びます
次に[都道府県名]という項目1つだけの表"都道府県一覧.tbl"を作ります
この表を開いて、上のテキストファイルを読み込んでみましょう

読み込んだあとに並べ替えて空白行とURLの行を削除、
さらに都道府県名に空白文字がありますから
#trim([],4)で置換すれば、あっという間にできあがり

次に一括処理を実行します
処理したい表を"顧客データ.tbl"、その中の処理対象項目が[住所]とすると

表 "顧客データ"
表 "都道府県一覧"
繰り返し ( .not #終端行 )
&STR=[都道府県]
編集表 "顧客データ"
絞り込み [住所]_&STR,文字比較方法=自動,部分一致検索=先頭一致
置換 [住所]=#sstr([住所],#文字数(&STR)+1)
絞り込み解除
編集表 "都道府県一覧"
ジャンプ 行番号 = 次行
繰り返し終了

これで処理終了です
16392 Re:住所データの中の県名削除 今村 誠 2002/06/22-01:13
記事番号16384へのコメント
改良版です、県の位置で判定します。
#計算(#代入(&STR,#部分列([住所],1,4))
,#代入(&STR,#S(&STR,"東京都",""))
,#代入(&STR,#S(&STR,"北海道",""))
,#代入(&STR,#S(&STR,"京都府","")),#代入(&STR,#S(&STR,"大阪府","")),
#代入(&STR,
#COND(
#文字位置(&STR,"諸県")>1
,&STR
,#文字位置(&STR,"県")>2
,#SSTR(&STR,#文字位置(&STR,"県")+1)
,1
,&STR))
,#代入(&STR,&STR+#部分列([住所],5)))
16408 Re:住所データの中の県名削除 磯田 2002/06/24-11:13
記事番号16382へのコメント
toruさんこんにちわ。必ず都道府県名が入っているということであれば、次のような方法ではいかがでしょうか。

#条件選択(#文字位置([住所],"県")=3 .or #文字位置([住所],"県")=4,
#部分列([住所],#文字位置([住所],"県")+1),#文字位置([住所],"府")=3,
#部分列([住所],#文字位置([住所],"府")+1),#文字位置([住所],"道")=3,
#部分列([住所],#文字位置([住所],"道")+1),#文字位置([住所],"府")=3,
#部分列([住所],#文字位置([住所],"府")+1),#文字位置([住所],"都")=3,
#部分列([住所],#文字位置([住所],"都")+1))

全国の県名は二文字か三文字しかないことを利用してあります。
文字位置と部分列関数を組み合わせた置換用の関数です。試してみてください。
16409 Re:住所データの中の県名削除 磯田 2002/06/24-11:26
記事番号16408へのコメント
もう少し短くなりそうです。
#条件選択(#文字位置([住所],"県")=3 .or #文字位置([住所],"県")=4,
#部分列([住所],#文字位置([住所],"県")+1),#文字位置([住所],"都")=3
.or #文字位置([住所],"道")=3 .or 文字位置([住所],"府")=3,#部分列([住所],4))

戻る