SELECT telephone_number
FROM table
WHERE telephone_number REGEXP '^1[() -]*999[() -]*999[() -]*9999$';
我如何使其对任何数字格式和任何数字有效 喜欢
407-888-0909
1(408)998-7654
7776654433
876-7788
现在它只适用于1-999-999-9999
答案 0 :(得分:1)
MySQL没有正则表达式替换函数,但是如果你有不必要数量的不需要的字符,你可以使用一系列替换语句,例如。
select replace(replace(replace(telephone, '-', ''), '(', ''), ')', '') from ...
答案 1 :(得分:1)
这是一个简单的MySQL正则表达式,允许在数字分组之间使用某些字符。
SELECT telephone_number
FROM table
WHERE telephone_number REGEXP '^1[() -]*999[() -]*999[() -]*9999$';
此匹配您的记录但不格式它们以便misc。字符被删除,但您至少可以找到与相关号码匹配的记录。
您可以通过将格式更改为更新语句来轻松修复格式。
答案 2 :(得分:1)
使用:
SELECT telephone_number
FROM table
WHERE telephone_number REGEXP '^1[() -]*[[:digit:]]{3}[() -]*[[:digit:]]{3}[() -]*[[:digit:]]{4}$';
参考:
答案 3 :(得分:0)
您还可以使用UDF(用户定义的函数)来获得REGEX_REPLACE
。