MySQL正则表达式在运行时

时间:2010-08-10 17:13:00

标签: mysql regex

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

4 个答案:

答案 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

<强> https://launchpad.net/mysql-udf-regexp