2012-12-26 99 views
0

我在數據庫表中有一個列名phone_number.Right現在存儲在表中的數字格式如ex。+ 91-852-9689568.我想格式化它只需要數字。我怎樣才能在MySql中做到這一點?我曾嘗試使用像REGEXP這樣的函數,但它顯示錯誤,如函數不存在。而且我不想使用多個REPLACE。MySql:查詢格式化數據庫表中的特定列

+0

猜你最好用一個小'功能'去掉數字;)因爲你不想用兩個'replace'..雖然那是最好的... – bonCodigo

回答

0

其中一個選項是使用mySql substring。 (只要格式不改變)

SELECT concat(SUBSTRING(pNo,2,2), SUBSTRING(pNo,5,3), SUBSTRING(pNo,9,7)); 
0

如果要通過投影僅格式化,使用SELECT,你只需要使用替換兩次,並用沒有問題。

SELECT REPLACE(REPLACE(columnNAme, '-', ''), '+', '') 
FROM tableName 

否則,如果要更新永久值,使用UPDATE

UPDATE tableName 
SET columnName = REPLACE(REPLACE(columnNAme, '-', ''), '+', '') 
+1

哇你已經得到了* Monarch * :) – bonCodigo

+0

PS:「我不想使用多個REPLACE。」 –

+0

@ TJ-我讀到了。但我想它使用'substring'好得多。它非常靈活。如果價值觀的模式不一樣呢?無論如何'OP'還有待選擇。 –

0

MySQL沒有進行模式匹配內置函數和替換。

您最好將整個字符串提取回應用程序,然後使用更靈活的字符串操作函數。例如,PHP中的preg_replace()。