MySQL регулярное выражение в предложении, где - PullRequest
24 голосов
/ 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

Ответы [ 3 ]

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

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

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

Справка:

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

Не очень разумно хранить телефонные номера в базе данных с пробелами, тире, скобками и т. Д. Самый эффективный способ - обрезать весь этот мусор до простого 10-значного числа. Таким образом, вы можете хранить число в столбце на основе INTEGER вместо VARCHAR.

0 голосов
/ 28 июля 2013
SELECT telephone_number
  FROM table
 WHERE telephone_number REGEXP '[1]?[(]?[[:DIGIT:]]{3}[)]?[-]?[[:DIGIT:]]{3}[-]?[[:DIGIT:]]{4}'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...