SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 27.06.2017 09:36:09

forlord
Участник
Зарегистрирован: 11.08.2011
Сообщений: 16

поиск телефонных номеров по маске

Не могу придумать как организовать поиск по маске телефона в mysql.
Есть таблица, хранящая номера мобильных телефонов (всегда 10 цифр) — примерно 2 миллиона записей.
Нужно организовать поиск по этим номерам с помощью масок
Маска номера может содержать от 1 до 7 латинских букв (A-B-C-D-E-F-G) или цифры от 0 до 9

Неактивен

 

#2 27.06.2017 12:09:59

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5827

Re: поиск телефонных номеров по маске

Неактивен

 

#3 27.06.2017 14:07:58

forlord
Участник
Зарегистрирован: 11.08.2011
Сообщений: 16

Re: поиск телефонных номеров по маске

можно более наглядный пример

Неактивен

 

#4 27.06.2017 14:15:13

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5827

Re: поиск телефонных номеров по маске

приведите пример тестовых данных
create table..
insert into..
и что должен вернуть запрос при заданных входящих параметрах

Неактивен

 

#5 27.06.2017 14:26:58

forlord
Участник
Зарегистрирован: 11.08.2011
Сообщений: 16

Re: поиск телефонных номеров по маске

CREATE TABLE `tbl_phones` (
  `id` int(11) NOT NULL,
  `phone` varchar(10) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

вот таблица в которой хранятся номера телефонов формат только цифры  918 000 0 000 (пробелов нет) при поиске нужно вернуть id номеров

Неактивен

 

#6 27.06.2017 14:31:01

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5827

Re: поиск телефонных номеров по маске

а в качестве критерия поиска что?

Неактивен

 

#7 27.06.2017 15:19:27

forlord
Участник
Зарегистрирован: 11.08.2011
Сообщений: 16

Re: поиск телефонных номеров по маске

должна быть маска
Маска номера может содержать от 1 до 7 латинских букв (A-B-C-D-E-F-G) или цифры от 0 до 9
т.е. к примеру если указано для поиска AABBCC* то он должен искать цифры две одинаковые (АА)+две одинаковые(ВВ но не равные АА)+СС(две одинаковые но не равные АА и ВВ)+любое число

Неактивен

 

#8 27.06.2017 16:11:52

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5827

Re: поиск телефонных номеров по маске

имхо, регуляркой в mysql такого не написать
используйте https://dev.mysql.com/doc/refman/5.7/en … ion_substr
первый символ равен второму, 3ий = 4ому, но не равен 1ому и т.д.

зачем utf8 если хранятся только цифры?

Неактивен

 

#9 27.06.2017 22:03:13

forlord
Участник
Зарегистрирован: 11.08.2011
Сообщений: 16

Re: поиск телефонных номеров по маске

можно переделать в любой тип хранения данных

Неактивен

 

#10 27.06.2017 22:17:53

forlord
Участник
Зарегистрирован: 11.08.2011
Сообщений: 16

Re: поиск телефонных номеров по маске

на php для маски ABC-ABC
регулярка будет /^(\d)((?!\1)\d)((?!\1|\2)\d)-\1\2\3$/ но как подобное в mysql запросы добавить

Неактивен

 

#11 29.06.2017 08:20:25

forlord
Участник
Зарегистрирован: 11.08.2011
Сообщений: 16

Re: поиск телефонных номеров по маске

как запрос для составить,
может есть возможность искать по одинаковым символам к примеру если искать ААА то он будет искать все 111,222,333,444,555... в поле номер

Неактивен

 

#12 03.07.2017 19:28:48

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: поиск телефонных номеров по маске

Давайте я вам подыграю и напишу

SELECT "1122" RLIKE "([[:digit:]])\1([[:digit:]])\2";


Но только, кажется, Вы делаете что-то странное. Такое выражение будет работать заведомо медленно и плохо. Скорее всего, у Вас какая-то другая продуктовая задача, которую Вы боитесь назвать smile

Неактивен

 

#13 03.07.2017 19:47:31

forlord
Участник
Зарегистрирован: 11.08.2011
Сообщений: 16

Re: поиск телефонных номеров по маске

все очень просто есть большая база телефонов и по ней необходим поиск с учетом масок

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson