2016-07-05 237 views
1

我正在研究MySQL並且有列phone-number。並嘗試使用正則表達式,而不是成功。刪除MySQL中所有特殊字符

如何刪除此欄中的所有特殊字符?

phone-number 
'8-903-400-65-38' 
'+79265682388' 
'8.10492E+15' 
'8-913-469-38-35' 
'+79882856253' 
'+79110987703' 
'+7 (495) 989-21-16' 
'8142 77-55-51' 
'+79378299427' 

請問誰能幫我解決這個問題?我不想失去這些聯繫號碼列表。

在此先感謝

+0

連字符('-')是正則表達式中的一個特殊字符,當在一個範圍內使用時,但我懷疑你想刪除它。另外,世界上是什麼?8.10492E + 15?它看起來像科學記數法,而不是電話號碼。 –

+0

@TimBiegeleisen,我只需要在這一列的數字,其餘的需要被刪除..! – Kate

+0

到目前爲止您嘗試了什麼?你使用了什麼正則表達式? – CZoellner

回答

0

這裏的罐頭答案僅僅是鏈接在一起的一系列調用的MySQL的REPLACE功能:

SELECT REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(phone-number, '-', ''), '+', ''), '.', ''), '(', ''), ')', ''), ' ', '') 

這從phone-number欄中刪除以下字符:

- + . () and space 

更好的解決方案是使用正則表達式來進行替換,但唉MySQL做n任何這樣的內置支持正則表達式替換。

如果你不希望的fugly REPLACE鏈,那麼你可以一些動態MySQL代碼它迭代一組定義的字符,並執行大量更新表中的。以下是這樣一個更新的樣子:

UPDATE yourTable 
SET phone-number = REPLACE(phone-number, '+', '') 

您可以對每個字符執行一次更新並以這種方式處理它。

+0

那麼字母呢? – Kate

+0

什麼是您的數據來源?我認爲你應該在MySQL之外處理這個問題。如果你給我足夠的細節,我也可以給你答案。 –

+0

它的一個數據已經在prod MYSQL數據庫上,現在需要像上面提到的那樣的一些過濾...所以就是這樣。需要更新prod本身的這些數據。 – Kate