![]() |
|
Модераторы: LSD |
![]()
|
|
| Bulat |
|
||||
![]() татарский Нео ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 22.3.2006 Где: Альметьевск |
Вообщем-то не знаю в какой раздел лучше это пихнуть, но вопрос такой:
В логах от "железки" номера(телефонные) могут приходить в таких видах как 78432993040 или 88432993040 или 2993040 или 993040...... Вот мне и нужно выцеплять такие номера, точнее сказать проверять другую информацию, по номерам, которая пишется в логах...... Изначально я просто все задумал, завел таблицу в БД, прописал самый длинный вариант номера и запрос был таков, часть запроса:
(скрипт на перле написан, на всякий случай) но тут не суть важно к какому именно языку принадлежит код Но вылезла такая проблема, что встречаются подобные номера 11(это номер телефона с которого звонят) а в базе у меня есть номер 78432993011(но это не одно и то же лицо), но в итоге у меня будет выглядеть как одно и тоже, потому как по запросу будет проходить, и боюсь это не еденичный случай...... Вот только я не знаю как мне этого избежать, дублировать в базе все номера по тому виду в каком он может прийти в логах, то бишь по одному и тому же клиенту писать четыре раза 78432993011 88432993011 2993011 993011 и потом
или...... вот другое или мне пока в голову не приходит И кстати нагружать код, громоздким анализом пришедшего номера не хотелось бы -------------------- менеджер по кодеврайтингу |
||||
|
|||||
| LSD |
|
|||
![]() 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. |
|||
|
||||
| Medved |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a |
like рессурсов много кушает.
-------------------- |
|||
|
||||
| Cashey |
|
|||
![]() Бессмертный ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3441 Регистрация: 13.11.2002 Где: в столице |
А если звонок будет с 5-ти цифровой АТС или код города будет 4-х значным? Т.е. нужно проверять на длину номера: ... and len(source_info) = .... -------------------- библия учит любить ближнего, а камасутра обучает как именно |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin |
Да хоть с 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. |
|||
|
||||
| Cashey |
|
|||
![]() Бессмертный ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3441 Регистрация: 13.11.2002 Где: в столице |
в одном городе - да (и то не всегда), но есть еще и междугородние и международные звонки -------------------- библия учит любить ближнего, а камасутра обучает как именно |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin |
И что? Из номера можно выделить: код выхода на междугороднюю связь, код города, номер телефона. Пусть даже в одном городе есть номера с разной длинной, мы все равно будем сравнивать номера целиком. Номер 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. |
|||
|
||||
| Cashey |
|
||||||
![]() Бессмертный ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3441 Регистрация: 13.11.2002 Где: в столице |
интересно, каким образом ты собираешься идентифицировать из сплошной цепочки цифр номера коды страны или города?
Читай начальное условие:
значит, эти номера должны идентифицироватся как одинаковые, но полное сравнение даст отрицательный результат. Поэтому я и предлогаю сравнивать по LIKE с одновременной проверкой длинны номера. -------------------- библия учит любить ближнего, а камасутра обучает как именно |
||||||
|
|||||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin |
Коды выхода на междугороднюю связь известны, отсюда и надо плясать. А вообще это не я буду идентифицировать, пусть у Bulat-а голова болит Читай мое предложение: Не будет тут уже никаких "длинных" номеров. Номер будет состоять из компонент, и полные номера никто не будет сравнивать. А 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. |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск |
Если бы речь о Firebird шла, можно было бы свою UDF написать на С.
-------------------- ![]() |
|||
|
||||
| Bulat |
|
||||
![]() татарский Нео ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 22.3.2006 Где: Альметьевск |
Вариант сразу отбрасывается, потому как нагружать такими вещами, конечно правильно спрофессиональной точки зрения, однако не целесообразно, по ряду других причин
с междугородкой и международными звонками проблем-то не будет, мне нужно лишь четко определять те звонки, номера которых есть в БД, то бишь наших клиентов, все остальное, ну я не думаю что будут сложности т.е. ты предлагаешь, банально, разбить на состовляющие и по состовляющим сравнивать весь номер, соответственно........ или что-то более хитрое? -------------------- менеджер по кодеврайтингу |
||||
|
|||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin |
Именно. По скорости выборки это будет самое быстрое решение. -------------------- 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. |
|||
|
||||
![]()
|
| Правила раздела «Флейм» | |
|
|
Добро пожаловать в «Флейм». В разделе не действуют многие правила:
Строго запрещено:
Напоминаем о существовании волшебной кнопочки "Репорт". Если вы увидели сообщение, несовместимое с жизнью, просьба подвести на нее курсор и клацнуть левой клавишей мышки. Тем самым вы сможете призвать злого, но жутко справедливого джина-модератора, который нашлет порчу на злостного нарушителя. Кстати - счётчик сообщений здесь не растёт. Глас Винграда:
Глас Философии:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Sneg0k |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Флейм | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |