Задавайте вопросы, мы ответим
Вы не зашли.
Уважаемые знатоки, подскажите пожалуйста, как организовать поиск в базе MySQL v 4.3 по номеру телефона, если в базе номера записуются с разделителями "-", возможно использование скобок, а также может быть по 2, 3 номера разделенных запятыми...
Например в базе есть записи:
1) 123-45-67, 8(095)255-55-33
2) 234-56-78
3) 33-33, 45-45, 56-56
Пользователь вводит 25555 или 4567 (1 запись)
Подскажите пожалуйста, как в моем случае правильно сформировать запрос, может регулярные выражения...?
Отредактированно qazaqq (02.09.2008 11:14:46)
Неактивен
я бы привязал к этим записям табличку с уже очищенными номерами без разделителей, где коды естественно в отдельном поле
Неактивен
Нужно убрать из колонок дефисы и потом там искать. Делается это функцией REPLACE:
Неактивен
Да, если Вы хотите, чтобы искала база, а не Ваше приложение, то нужно все строки
привести к единому виду. Можно написать хранимую функцию сравнения телефонов,
но этот вариант будет работать очень долго без индекса, особенно на больших базах.
Что касается проблемы "несколько телефонов на запись" - нужно сделать отдельную
табличку (с числовыми телефонами), которую привязать к основной по ключу.
Неактивен
ВСЕМ ОГРОМНОЕ СПАСИБО!!! Буду пробовать, надеюсь получится!
Отредактированно qazaqq (02.09.2008 12:43:41)
Неактивен
ВСЕМ спасибо, а особенно LazY !!! Все отлично работает, база не очень большая...
Самое интересное, что вчера сам читал про строковые функции SQL и пробовал REPLACE, но не получилось... Просто не прикрутил LIKE к запросу!
Неактивен