Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

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

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 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,061
По умолчанию

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

Самый не оптимальный и дубовый вариант - оставить все как есть и сделать пользовательскую функцию, убирающую из номера все не цифры и обращаться к ней в условии 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,260
По умолчанию

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

Цитата:
Можете помочь сделать эту функцию которую в 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,260
По умолчанию

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

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,061
По умолчанию

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

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


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


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS