mysql - 如何使用 REGEX 清理标点符号、空格和字母

标签 mysql regex replace

我有一些关于电话号码的示例,如下所示:

0810-093-485-58
0811.4845.5677
0812 567 6788 2
08138475967079/0813845765998
0814749345875 NEW
64739845985
0815756867967 (G) / 022 845 769
00816956865090
0817637698578

我尝试使用替换和正则表达式,如下:

select replace (number, '','') as phone_number
from details
where number not regexp '[[:punct:] A-Za-z]' and number not regexp '^ [1-9]'

这些语法仅应用结果:

0817637698578

我的观点是我想清理那些标点符号、空格和包含的字母:

081009348558
081148455677
08125676788 2
08138475967079
0814749345875
0815756867967
0816956865090
0817637698578

所以,结果不仅是一个,而是所有电话号码,只是非数字都被清除。 语法怎么样?请帮忙。谢谢。

最佳答案

您的 where 子句排除了所有包含字母、空格或标点符号的数字,因此您将看到的都是格式良好的数字。此外,replace (number, '','') 根本不会对字符串进行任何更改。

如果没有正则表达式 replace 函数,就没有什么好的方法可以做到这一点,该函数可作为用户定义的函数使用,但不是 native 函数。看PREG_REPLACE here .

关于mysql - 如何使用 REGEX 清理标点符号、空格和字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10538704/

相关文章:

mysql - 如果部门有超过 20 名员工,则返回部门中最年长员工的信息

python - 从输出中删除方括号并在第一次匹配后停止正则表达式

javascript - jQuery .test 使用正则表达式返回 false

php - 查找并替换服务器上的文件夹名称

powershell - 替换包含 & 符号的 XML 节点中的文本

MySQL - 根据条件更新表 1,并根据其他表 2 更新最大值(值)

php - 表格和过帐 - 多种数据

PHP 脚本不向 mysql 表中添加列

javascript - 防止计算字段出现多个小数点

javascript - 替换字符串中匹配模式的最后一个实例