Регулярные выражения в MySQL? или

Узнай цену своей работы

Формулировка задачи:

В таблице есть поле Phone. Телефон в нем может храниться ну как душе угодно, например: 8(928)000-11-22 8 (928) 000-11-22 89280001122 +7 (928) 00-011-22 ну и т.д. Варик как-то организовать поиск по номеру телефона при таких условиях? Или по-любому придется обрабатывать данные в php?
Я чего нагуглил, кстати: поиск через что-то типа
REPLACE (REPLACE (REPLACE (REPLACE (REPLACE (REPLACE (REPLACE (REPLACE (Phone, '    ', ''), '-', ''), ' ', ''), ';', ''), ',', ''), ')', ''), '(', ''), '+', '')
Но эта конструкция, как я понимаю, капец как грузит БД

Решение задачи: «Регулярные выражения в MySQL? или»

textual
Листинг программы
IF(Phone REGEXP '^[[:digit:]]{11}$', Phone, АДОВЫЕ_REPLACE)

Объяснение кода листинга программы

  1. Проверяется условие Phone REGEXP '^[[:digit:]]{11}$' (Номер телефона должен содержать ровно 11 цифр).
  2. Если условие истинно, переменной Phone присваивается значение АДОВЫЕ_REPLACE (что-то похожее на обработку ошибки или исключения).
  3. Если условие ложно, переменной Phone присваивается значение АДОВЫЕ_REPLACE (что-то похожее на обработку ошибки или исключения).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.267 из 5