2016-07-05 188 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