- ベストアンサー
電話番号のデータの書式を変換したい。
お世話になります。 accessに電話番号が入力されたデータベースがあるのですが、その入力の書式が”0123456789”というような、ハイフンが含まれていないものなのです。 これを、全ての電話番号データ(1万件くらいある)を一気に”0123-456-789”のようなハイフンが含まれる形に変換したいのですが、どのようにしたらよいのでしょうか? ご存知の方、どうか御指導お願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
郵便番号の場合、フィールドに入力されている桁数が7桁で、フィールドのサイズが8桁以上になっているという前提でいきます。 フィールドの値をまとめて更新するには更新クエリーを作成します。 そこで、更新するフィールドで郵便番号のフィールドを 選択し、値に、 Left([郵便番号],3) & "-" & Right([郵便番号],4) というような文字列を編集する式を記述し、 実行すれば、すべてのレコードが更新されます。
その他の回答 (3)
accessは使っていないのでプログラムなどはわかりませんが データベースの観点から言えば可能です。 考え方としては 市外局番が2桁・3桁・4桁・5桁と分かれていますから 例えば03と06で始まるときは 先頭から1桁目~2桁目+"-"+先頭から3桁目~6桁目+"-"先頭から7桁目~10桁目 042と045で始まるときは 先頭から1桁目~3桁目+"-"+先頭から4桁目から6桁目+"-"先頭から7桁目から10桁目 という置換の式を書けば良いかと思います。 1万件のデータでは手作業で行うよりも 置換などの式で変換されたほうが効率的で 間違いを防げると思います。 ちなみに桐というデータベースソフトでは可能ですから accessでも試してみてください。
- taka_tetsu
- ベストアンサー率65% (1020/1553)
結論から言うと、無理でしょうね。 強引にやるとすればプログラムを書かないといけないと思います。 と、だけだとひどいので、一応考え付く方法を。 1.市外局番や、携帯の090などを入れたテーブルを準備します。 2.電話番号の前6桁で、1のテーブルを検索します。 3.一致するデータ(市外局番)があったら、桁数を調べてハイフンを挿入します。(桁数が11、10、9(今あったかな?)、ハイフンの数も、1のときと2のときがあるので工夫が必要です) 4.一致するデータがなかったら、前5桁で検索。 5.あとは、検索する桁数を1つずつ減らしていきます。 というような、感じですかね? 何でこんな風にするかというと、市外局番の最長桁は6桁であるということと、045(横浜)、04(柏)のように、単なる一致では判断つかないところもあるためです。 ということで一筋縄ではいかないことを理解してください。
お礼
ありがとうございます。 なかなか一筋縄では行きそうにないことがよくわかりました。 がんばってみます。
- kensaku
- ベストアンサー率22% (2112/9525)
電話の局番は、よく変更になりますので、規則性がありません。 東京は03、大阪は06と2桁ですが、都下の042地域は3桁、神奈川でも横浜と川崎は3桁で、他は4桁などです。042地域にしても、3桁になったのは最近です。 電話帳をたよりに、テーブルを作れば可能でしょうが、やるだけ無駄、という気もしますね。利用方法は何ですか?
補足
お答えありがとうございました。 利用方法はなぜかというと、そのほうがデータを閲覧するときに見やすいかなと思ったので、やってみよう思いました。 確かに電話番号では市外局番の桁数が地域によって違いますよね。 では郵便番号などの、桁数がきちんと分かっているものではどのようにすればよろしいですか?
補足
ありがとうございます。 >先頭から1桁目~3桁目+"-"+先頭から4桁目から6桁目+"-"先頭から7桁目か10 >桁目という置換の式を書けば良いかと思います。 この式はどうやって書けばよいのでしょうか? よろしくおねがいします。