プロが教える店舗&オフィスのセキュリティ対策術

お世話になります。
accessに電話番号が入力されたデータベースがあるのですが、その入力の書式が”0123456789”というような、ハイフンが含まれていないものなのです。
これを、全ての電話番号データ(1万件くらいある)を一気に”0123-456-789”のようなハイフンが含まれる形に変換したいのですが、どのようにしたらよいのでしょうか?

ご存知の方、どうか御指導お願いいたします。

A 回答 (4件)

郵便番号の場合、フィールドに入力されている桁数が7桁で、フィールドのサイズが8桁以上になっているという前提でいきます。



フィールドの値をまとめて更新するには更新クエリーを作成します。

そこで、更新するフィールドで郵便番号のフィールドを
選択し、値に、
Left([郵便番号],3) & "-" & Right([郵便番号],4)

というような文字列を編集する式を記述し、
実行すれば、すべてのレコードが更新されます。
    • good
    • 1

accessは使っていないのでプログラムなどはわかりませんが


データベースの観点から言えば可能です。

考え方としては
市外局番が2桁・3桁・4桁・5桁と分かれていますから
例えば03と06で始まるときは
先頭から1桁目~2桁目+"-"+先頭から3桁目~6桁目+"-"先頭から7桁目~10桁目
042と045で始まるときは
先頭から1桁目~3桁目+"-"+先頭から4桁目から6桁目+"-"先頭から7桁目から10桁目
という置換の式を書けば良いかと思います。

1万件のデータでは手作業で行うよりも
置換などの式で変換されたほうが効率的で
間違いを防げると思います。

ちなみに桐というデータベースソフトでは可能ですから
accessでも試してみてください。

この回答への補足

ありがとうございます。

>先頭から1桁目~3桁目+"-"+先頭から4桁目から6桁目+"-"先頭から7桁目か10
>桁目という置換の式を書けば良いかと思います。

この式はどうやって書けばよいのでしょうか?
よろしくおねがいします。

補足日時:2002/06/02 15:15
    • good
    • 0

結論から言うと、無理でしょうね。


強引にやるとすればプログラムを書かないといけないと思います。

と、だけだとひどいので、一応考え付く方法を。

1.市外局番や、携帯の090などを入れたテーブルを準備します。

2.電話番号の前6桁で、1のテーブルを検索します。

3.一致するデータ(市外局番)があったら、桁数を調べてハイフンを挿入します。(桁数が11、10、9(今あったかな?)、ハイフンの数も、1のときと2のときがあるので工夫が必要です)

4.一致するデータがなかったら、前5桁で検索。

5.あとは、検索する桁数を1つずつ減らしていきます。

というような、感じですかね?

何でこんな風にするかというと、市外局番の最長桁は6桁であるということと、045(横浜)、04(柏)のように、単なる一致では判断つかないところもあるためです。

ということで一筋縄ではいかないことを理解してください。
    • good
    • 0
この回答へのお礼

ありがとうございます。
なかなか一筋縄では行きそうにないことがよくわかりました。
がんばってみます。

お礼日時:2002/06/02 15:14

電話の局番は、よく変更になりますので、規則性がありません。


東京は03、大阪は06と2桁ですが、都下の042地域は3桁、神奈川でも横浜と川崎は3桁で、他は4桁などです。042地域にしても、3桁になったのは最近です。
電話帳をたよりに、テーブルを作れば可能でしょうが、やるだけ無駄、という気もしますね。利用方法は何ですか?

この回答への補足

お答えありがとうございました。
利用方法はなぜかというと、そのほうがデータを閲覧するときに見やすいかなと思ったので、やってみよう思いました。
確かに電話番号では市外局番の桁数が地域によって違いますよね。
では郵便番号などの、桁数がきちんと分かっているものではどのようにすればよろしいですか?

補足日時:2002/06/02 15:09
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す