@jaygen

Как искать номер телефона по бд mysql через php?

Подскажите в базе данных имеются телефоны с видом записей
8903ххх-хх-хх,
+7903ххххххх
8-903-хх-хх-ххх
7-915-хх-ххх-хх
В поле для поиска вводится значение
ххххххх
Если через обычный запрос LIKE
SELECT * FROM test WHERE LIKE %xxxxxxx%
Выводит только одного формата, как можно получить что бы поиск охватывал и другие форматы записи
  • Вопрос задан
  • 416 просмотров
Пригласить эксперта
Ответы на вопрос 3
inoise
@inoise Куратор тега PHP
Solution Architect, AWS Certified, Serverless
Никак. Перед сохранением в базу данных надо нормализовать номера
Ответ написан
Комментировать
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
Можно через REGEXP_REPLACE() преобразовать данные в БД на лету, и дальше по ним искать.
https://dev.mysql.com/doc/refman/8.0/en/regexp.htm...

удалить всё кроме чисел из значений в столбце phone
SELECT * FROM table 
WHERE REGEXP_REPLACE(phone, '[^0-9]+', '') LIKE '79xxxx'
Ответ написан
Комментировать
2ord
@2ord
Нормализовать данные еще не поздно. Можно создать дополнительную колонку данных VARCHAR(20) и нормализовать телефоны туда. Или выполнить миграцию всей БД на той же колонке.
Как лучше сохранять в базу данных номера телефонов?
https://stackoverflow.com/questions/8284647/how-to...
https://ru.wikipedia.org/wiki/E.164
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы