MySQL регулярное выражение во время выполнения - PullRequest
1 голос
/ 10 августа 2010
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 ]

1 голос
/ 10 августа 2010

Использование:

SELECT telephone_number
  FROM table
 WHERE telephone_number REGEXP '^1[() -]*[[:digit:]]{3}[() -]*[[:digit:]]{3}[() -]*[[:digit:]]{4}$';

Ссылка:

1 голос
/ 10 августа 2010

Вот простое регулярное выражение MySQL, которое допускает определенные символы между группами чисел.

SELECT telephone_number
FROM table
WHERE telephone_number REGEXP '^1[() -]*999[() -]*999[() -]*9999$';

Это соответствует вашим записям, но не форматирует их так, чтобы разное. символы удаляются, но вы, по крайней мере, можете найти записи, соответствующие указанному номеру.

Вы можете легко исправить форматирование, изменив это в операторе обновления.

1 голос
/ 10 августа 2010

MySQL не имеет функции замены регулярного выражения, но если у вас ограниченное количество нежелательных символов, вы можете использовать серию операторов замены, например.

select replace(replace(replace(telephone, '-', ''), '(', ''), ')', '') from ...
0 голосов
/ 10 августа 2010

Вы также можете использовать UDF (пользовательскую функцию), чтобы иметь REGEX_REPLACE.

https://launchpad.net/mysql-udf-regexp

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...