Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.06.2014, 05:28   #1
JustDealRu
Новичок
Джуниор
 
Регистрация: 04.06.2014
Сообщений: 4
Радость Поиск номера телефона в БД

Добрый день, форумчани.

Есть задача, найти в БД телефон. Но телефоны в БД храняться по разному, некоторые так: 89198578453, некторые так 8(919)8578453 некоторые 7(919)8578453 некоторые +7(919)8578453 некоторые 7(919) 85 - 78 - 453 и т.п.

Как найти телефон в такой ситуации?
Есть идея. Может переменную в php так обработать что бы первые 1 или 2 символа убирались т.е. 8 или +7 после чего убираем все символы кроме цифр и получаем хвост вида 9198578453 и его проверяем по БД, но вот теперь как к то кому же виду привести запись в БД при запросе?

Заранее благодарен если поможете.
JustDealRu вне форума Ответить с цитированием
Старый 04.06.2014, 08:38   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Самый оптимальный и правильный вариант - хранить в базе номер только из цифр. Его бы и использовал

Самый не оптимальный и дубовый вариант - оставить все как есть и сделать пользовательскую функцию, убирающую из номера все не цифры и обращаться к ней в условии WHERE

И если СУБД нормально поддерживает регулярные выражения, то в LIKE его использовать. Но тоже не оптимально
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 04.06.2014 в 09:02.
Аватар вне форума Ответить с цитированием
Старый 04.06.2014, 14:27   #3
JustDealRu
Новичок
Джуниор
 
Регистрация: 04.06.2014
Сообщений: 4
По умолчанию

сейчас бы хотя бы неоптимальный бы вариант
Можете помочь сделать эту функцию которую в WHERE вставить можно будет?
Очень благодарен буду
JustDealRu вне форума Ответить с цитированием
Старый 04.06.2014, 14:46   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

вставлю свои пять копеек...

Цитата:
Можете помочь сделать эту функцию которую в WHERE вставить можно будет?
Написание функции зависит от СУБД.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.06.2014, 15:33   #5
JustDealRu
Новичок
Джуниор
 
Регистрация: 04.06.2014
Сообщений: 4
По умолчанию

Serge_Bliznykov, mysql
JustDealRu вне форума Ответить с цитированием
Старый 04.06.2014, 17:15   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от JustDealRu Посмотреть сообщение
Serge_Bliznykov, mysql
ясно. я - пас.
я в MySQL не программировал внутренную логику на стороне сервера, извиняйте!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.06.2014, 17:29   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

preg_replace в MySQL есть?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 04.06.2014, 18:03   #8
JustDealRu
Новичок
Джуниор
 
Регистрация: 04.06.2014
Сообщений: 4
По умолчанию

Аватар, вроде что то типо того есть, регулярку можно использовать, если хотя бы регулярку сделать, то я дальше сам попробую затолкать её в запрос.
JustDealRu вне форума Ответить с цитированием
Старый 04.06.2014, 18:48   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Наверно типа такого, не уверен, с регулярками не дружу. Поэксперементируй
Код:
... where preg_replace('/\D/','',TelNumber)='89198578453'
Цитата:
вроде что то типо того есть
Гы. Толи есть, толи нет, где-то, что-то типа того
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 04.06.2014 в 18:58.
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск номера телефона в текстовом файле biowoooooolf Паскаль, Turbo Pascal, PascalABC.NET 5 04.03.2011 15:11
Поле для выбора номера телефона Никки Общие вопросы по Java, Java SE, Kotlin 1 04.02.2011 06:57
вместо номера телефона выводится на экран какой-то мусор le_den Общие вопросы C/C++ 2 25.11.2008 20:45
Определение номера телефона xpress Общие вопросы по Java, Java SE, Kotlin 6 29.04.2008 20:02