@RaulDuke

Как получить только цифровые значение полей в mysql?

Всем привет,

помогите сформулировать Mysql запрос. Небольшое описание db:

Есть таблица "Записная книжка" вида:
name, phone_home, phone_mobile, phone_work, phone_other, phone_fax


Поиск в этой таблице по номеру телефону - задача тривиальная:

SELECT * FROM `users` WHERE (phone_home LIKE "%777777%" or phone_mobile LIKE "%777777%" or phone_work LIKE "%777777%" or phone_other LIKE "%777777%" or phone_fax LIKE "%777777%")


"Но есть нюанс"(с)
Остальные пользователи тоже имеют к ней доступ и записывают туда свои контакты. Телефоны они записывают как считают нужным, вот несколько печальных примеров: "77.77.77", "7-777-77", "(777)777" и т.д. Следовательно, мне при составлении запроса к базе необходимо каким то образом игнорировать все нецифровые символы из поля. Т.е. чтобы запись в базе "7(77)-7.77" была найдена по запросу "LIKE "%777777%".

Помогите пожалуйста сформулировать такой запрос к базе.

Заранее благодарен и хорошего дня.
  • Вопрос задан
  • 204 просмотра
Пригласить эксперта
Ответы на вопрос 2
qonand
@qonand
Software Engineer
Составьте регулярку и ищите по ней с помощью regexp
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
А что, пользователи пишут напрямую в базу?
Регулярку составить можно, /\D*7\D*7\D*7\D*7\D*7\D*7\D*/, но это тупиковый путь. Правьте клиент, чтобы он записывал в базу уже нормализованные номера, ну или повесьте на таблицу триггер, форматирующий номера при вставке/изменении.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы