Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Серьезный профессиональный вопрос 
V
    Опции темы
Bulat
  Дата 23.11.2006, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск




Вообщем-то не знаю в какой раздел лучше это пихнуть, но вопрос такой:

В логах от "железки" номера(телефонные) могут приходить в таких видах как 78432993040 или 88432993040 или 2993040 или 993040...... Вот мне и нужно выцеплять такие номера, точнее сказать проверять другую информацию, по номерам, которая пишется в логах......
Изначально я просто все задумал, завел таблицу в БД, прописал самый длинный вариант номера
и запрос был таков, часть запроса:
Цитата

....source_info like '%$source_info'

(скрипт на перле написан, на всякий случай) но тут не суть важно к какому именно языку принадлежит код smile 

Но вылезла такая проблема, что встречаются подобные номера 11(это номер телефона с которого звонят) а в базе у меня есть номер 78432993011(но это не одно и то же лицо), но в итоге у меня будет выглядеть как одно и тоже, потому как по запросу будет проходить, и боюсь это не еденичный случай...... Вот только я не знаю как мне этого избежать, дублировать в базе все номера по тому виду в каком он может прийти в логах, то бишь по одному и тому же клиенту писать четыре раза
78432993011
88432993011
2993011
993011

и потом
Цитата

....source_info like '$source_info'


или...... вот другое или мне пока в голову не приходит smile 

И кстати нагружать код, громоздким анализом пришедшего номера не хотелось бы smile 


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
LSD
Дата 23.11.2006, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin




Разбей номер на элементы, т.е. код выхода на межгород, код города, первая цифра номера, оставшиеся цифры номера. Например номер 78432993011 будет разбит так: 7 | 843 | 2 | 993011, а номер 2993011 так: null | null | 2 | 993011. А затем номер который надо найти разбиваешь на такие же элементы и ищешь его. И главное тут не будет никаких like.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Medved
Дата 23.11.2006, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a




like рессурсов много кушает.


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Cashey
Дата 23.11.2006, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице




Цитата(LSD @  23.11.2006,  12:43 Найти цитируемый пост)
Например номер 78432993011 будет разбит так: 7 | 843 | 2 | 993011, а номер 2993011 так: null | null | 2 | 993011.

А если звонок будет с 5-ти цифровой АТС или  код города будет 4-х значным? Т.е. нужно проверять на длину номера: 
Цитата(Bulat @  23.11.2006,  11:58 Найти цитируемый пост)
....source_info like '%$source_info'
 ... and len(source_info) = ....



--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
LSD
Дата 23.11.2006, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin




Цитата(Cashey @  23.11.2006,  15:33 Найти цитируемый пост)
А если звонок будет с 5-ти цифровой АТС или  код города будет 4-х значным? Т.е. нужно проверять на длину номера: 

Да хоть с 3-х значной. В одном городе номера имеют одинаковую длинну. И значит если номера одинаковые, то у них и длинна одинаковая.
Единственное, я не понял почему первая цифра в номере может быть отброшена, а так длинна номера тут не важна.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Cashey
Дата 23.11.2006, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице




Цитата(LSD @  23.11.2006,  18:23 Найти цитируемый пост)
Да хоть с 3-х значной. В одном городе номера имеют одинаковую длинну. И значит если номера одинаковые, то у них и длинна одинаковая.

в одном городе - да (и то не всегда), но есть еще и междугородние и международные звонки


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
LSD
Дата 23.11.2006, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin




Цитата(Cashey @  23.11.2006,  20:29 Найти цитируемый пост)
в одном городе - да (и то не всегда), но есть еще и междугородние и международные звонки

И что? Из номера можно выделить: код выхода на междугороднюю связь, код города, номер телефона. Пусть даже в одном городе есть номера с разной длинной, мы все равно будем сравнивать номера целиком. Номер 11 и 993011 не равны, ни при каком раскладе.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Cashey
Дата 23.11.2006, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице




Цитата(LSD @  23.11.2006,  22:59 Найти цитируемый пост)
 Из номера можно выделить: код выхода на междугороднюю связь, код города, номер телефона.

интересно, каким образом ты собираешься идентифицировать из сплошной цепочки цифр номера коды страны или города?

Цитата(LSD @  23.11.2006,  22:59 Найти цитируемый пост)
Пусть даже в одном городе есть номера с разной длинной, мы все равно будем сравнивать номера целиком. Номер 11 и 993011 не равны, ни при каком раскладе.

Читай начальное условие:

Цитата(Bulat @  23.11.2006,  11:58 Найти цитируемый пост)
В логах от "железки" номера(телефонные) могут приходить в таких видах как 78432993040 или 88432993040

значит, эти номера должны идентифицироватся как одинаковые, но полное сравнение даст отрицательный результат.
Поэтому я и предлогаю сравнивать по LIKE с одновременной проверкой длинны номера.


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
LSD
Дата 24.11.2006, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin




Цитата(Cashey @  23.11.2006,  22:35 Найти цитируемый пост)
интересно, каким образом ты собираешься идентифицировать из сплошной цепочки цифр номера коды страны или города?

Коды выхода на междугороднюю связь известны, отсюда и надо плясать. А вообще это не я буду идентифицировать, пусть у Bulat-а голова болит smile Да и вообще какой-то алгоритм сравнения номеров у него уже есть, он же смог сформулировать условие.

Цитата(Cashey @  23.11.2006,  22:35 Найти цитируемый пост)
Читай начальное условие:

Читай мое предложение:
Цитата(LSD @  23.11.2006,  11:43 Найти цитируемый пост)
Разбей номер на элементы, т.е. код выхода на межгород, код города, первая цифра номера, оставшиеся цифры номера.
<...>
значит, эти номера должны идентифицироватся как одинаковые, но полное сравнение даст отрицательный результат.
Поэтому я и предлогаю сравнивать по LIKE с одновременной проверкой длинны номера.

Не будет тут уже никаких "длинных" номеров. Номер будет состоять из компонент, и полные номера никто не будет сравнивать.
А LIKE это зло smile 


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
mr.DUDA
Дата 24.11.2006, 22:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск




Если бы речь о Firebird шла, можно было бы свою UDF написать на С.


--------------------
user posted image
PM MAIL WWW   Вверх
Bulat
Дата 25.11.2006, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск




Цитата(mr.DUDA @  24.11.2006,  22:45 Найти цитируемый пост)
Если бы речь о Firebird шла, можно было бы свою UDF написать на С. 

Вариант сразу отбрасывается, потому как нагружать такими вещами, конечно правильно спрофессиональной точки зрения, однако не целесообразно, по ряду других причин smile 
Цитата(Cashey @  23.11.2006,  20:29 Найти цитируемый пост)
в одном городе - да (и то не всегда), но есть еще и междугородние и международные звонки 

с междугородкой и международными звонками проблем-то не будет, мне нужно лишь четко определять те звонки, номера которых есть в БД, то бишь наших клиентов, все остальное, ну я не думаю что будут сложности smile 
Цитата(LSD @  23.11.2006,  11:43 Найти цитируемый пост)
Разбей номер на элементы, т.е. код выхода на межгород, код города, первая цифра номера, оставшиеся цифры номера. Например номер 78432993011 будет разбит так: 7 | 843 | 2 | 993011, а номер 2993011 так: null | null | 2 | 993011. А затем номер который надо найти разбиваешь на такие же элементы и ищешь его.

т.е. ты предлагаешь, банально, разбить на состовляющие и по состовляющим сравнивать весь номер, соответственно........ или что-то более хитрое? smile 


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
LSD
Дата 25.11.2006, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin




Цитата(Bulat @  25.11.2006,  13:39 Найти цитируемый пост)
т.е. ты предлагаешь, банально, разбить на состовляющие и по состовляющим сравнивать весь номер, соответственно........

Именно. По скорости выборки это будет самое быстрое решение.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила раздела «Флейм»
Sneg0k

Добро пожаловать в «Флейм».

В разделе не действуют многие правила:

  • Можно оффтопить(умеренно)
  • Можно общаться на темы, не только связанные с программированием.

Строго запрещено:

  • Размещать рекламу
  • Обсуждать политику
  • Оскорблять друг-друга и переходить на личности
  • Наезжать, провоцировать других участников форума
  • Материться
  • Троллить

Напоминаем о существовании волшебной кнопочки "Репорт". Если вы увидели сообщение, несовместимое с жизнью, просьба подвести на нее курсор и клацнуть левой клавишей мышки. Тем самым вы сможете призвать злого, но жутко справедливого джина-модератора, который нашлет порчу на злостного нарушителя. Кстати - счётчик сообщений здесь не растёт.


Глас Винграда:


Глас Философии:


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Sneg0k

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Флейм | Следующая тема »


 




[ Время генерации скрипта: 0.0571 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.