2011-09-14 20 views
0

DBには(999)123-3456のような形式の電話番号があります。フォーマットMySQLの電話番号

私は123-123-1234

のように見えるためにそれらを必要としていますすぐにすべてのこれらの電話番号をフォーマットするために正規表現または私はMySQLの中で行うことができる何かの任意の並べ替えはありますか? また、不満を募らせて、いくつかはそのようにフォーマットされていないので、これを単に列全体に適用することはできません。

ありがとうございます!

+0

を? – stslavik

答えて

6

迅速な解決策は、これらの2つのクエリを実行するために、次のようになりますのvarcharとして格納され

UPDATE table_name set PhoneCol = REPLACE(PhoneCol, '(', ''); 
UPDATE table_name set PhoneCol = REPLACE(PhoneCol, ') ', '-'); 
+0

完璧に、迅速かつ簡単に作業しました!ありがとう! – Sara

1

すべての値をループしてそれらを更新する小さなPHPスクリプトを作成してください。その変更をPHPで行うのは簡単です。次に、行を更新して値を上書きします。

+0

Probスクリプトを書くのは良い考えではありませんが、MySQLの機能を使う方がいいです。 PHPを使用する方がはるかに遅い –

+0

PHPを使用する場合、かなりの柔軟性があります。彼女はすべてが同じフォーマットであるとは言いませんでしたので、PHPはそれらを単一のフォーマットに「修復」するほうがよいでしょう。そして、それが単なる時間変換であれば、誰がスピードを気にしますか? – Landon

1

多分2パスの溶液。

  1. ストリップアウト全ての数字以外の文字(スペース)書式文字はめ込み
  2. 「(」、「)」、「」、および「 - 」正しいスポット (またはそれ以上に、まだ、去ります。それらをオフして、レポートの選択時にのみフォーマット)