Подтвердить что ты не робот

Regex mySQL в предложении where

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

4b9b3361

Ответ 1

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

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

Ссылка:

Ответ 2

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

Ответ 3

SELECT telephone_number
  FROM table
 WHERE telephone_number REGEXP '[1]?[(]?[[:DIGIT:]]{3}[)]?[-]?[[:DIGIT:]]{3}[-]?[[:DIGIT:]]{4}'