从MySQL中的列中删除所有特殊字符

时间:2016-07-05 15:48:43

标签: mysql

我正在研究MySQL并且列phone-number。并尝试使用正则表达式而不是成功。

如何从此列中删除所有特殊字符?

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'

请问有人可以帮我解决这个问题吗?我不想丢失这些联系号码列表。

提前致谢

1 个答案:

答案 0 :(得分:1)

这里的固定答案只是将MySQL REPLACE函数的一系列调用链接在一起:

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

这会从phone-number列中删除以下字符:

- + . ( ) and space

更好的解决方案是使用正则表达式来进行替换,但是唉,MySQL没有任何内置支持正则表达式替换。

如果你不想要一个简陋的REPLACE链,那么你可以编写一些动态的MySQL代码,它会迭代你定义的一组字符,并做一个数字对表的更新。以下是这样的更新:

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

您可以为每个角色执行一次更新并以这种方式处理。