2011-09-14 58 views
0

我在數據庫中有一堆電話號碼,格式如下:(999)123-3456。在MySQL中格式化電話號碼

我需要他們的樣子123-123-1234

是否有任何形式的正則表達式或東西,我可以在MySQL做快速格式化所有這些電話號碼?另外,令人沮喪的是,有些不是這樣的格式,所以我不能將它應用到整個列。

謝謝!

+0

存儲爲VARCHAR處理? – stslavik

回答

6

一個快速的解決辦法是運行這兩個查詢:

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

也許是一個兩通的解決方案。

  1. 剝離所有非數字字符(空格)
  2. 插圖格式化字符「(」,「)」,「」,和「 - 」到正確的地點 (或更好,但離開。他們的時間,格式只在您的報告中選擇)