@jaygen

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

Подскажите в базе данных имеются телефоны с видом записей
8903ххх-хх-хх,
+7903ххххххх
8-903-хх-хх-ххх
7-915-хх-ххх-хх
В поле для поиска вводится значение
ххххххх
Если через обычный запрос LIKE
SELECT * FROM test WHERE LIKE %xxxxxxx%
Выводит только одного формата, как можно получить что бы поиск охватывал и другие форматы записи
  • Вопрос задан
  • 96 просмотров
Пригласить эксперта
Ответы на вопрос 3
inoise
@inoise
Solution Architect, AWS Certified, Serverless
Никак. Перед сохранением в базу данных надо нормализовать номера
Ответ написан
nokimaro
@nokimaro Куратор тега PHP
Можно через 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
Ответ написан
Ваш ответ на вопрос

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

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