![]() |
|
Модераторы: skyboy |
![]()
|
|
| maddoc |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 364 Регистрация: 11.5.2005 Репутация: нет Всего: 1 |
Суть вопроса. Есть таблица, там храняться номера телефонов. по ним нужно сделать поиск. Но телефоны написаны в разных форматах (как угодно 8-495 -1321231 или 8495123126 или 123123123 или моб.12312333, дом 1234566, вообщем как угодно).
Я пока остановился на том, что нужно создать новую таблицу, и при переносе чистить все кроме цифр. как такое реализовать? у меня mysql. Это сообщение отредактировал(а) maddoc - 5.5.2009, 17:35 -------------------- "Безвыходных положений не бывает" (с) Камасутра |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
Правда, это уберёт только "левые" символы в начале и в конце. Серединку придётся дообрабатывать... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| maddoc |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 364 Регистрация: 11.5.2005 Репутация: нет Всего: 1 |
а каким образом с серединкой бороться?
-------------------- "Безвыходных положений не бывает" (с) Камасутра |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
В общем пиши функцию...
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| maddoc |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 364 Регистрация: 11.5.2005 Репутация: нет Всего: 1 |
а как это сделать одельным запросом? в новой таблице?
-------------------- "Безвыходных положений не бывает" (с) Камасутра |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 1 Всего: 315 |
имхо, для таких вариантов - ввести отдельное поле в ту же таблицу, куда копировать номер исключительно из цифр. при запросах insert вставлять уже готовый, по нему и искать. при создании поля один раз пробежаться по таблице и перекопировать скриптом старые номера в новом варианте
|
|||
|
||||
| DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 4 Всего: 44 |
в оракле есть функция translate
попробуйте поискать аналоги в mysql Это сообщение отредактировал(а) DimW - 5.5.2009, 19:00 |
|||
|
||||
| Zloxa |
|
||||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
Для случая, показанного тобой, достаточно Replace(который, кстати и в mySql вроде есть) Лучше же, ИМХО транслейт зарядить катко так:
maddoc, Если набор сорных символов заранее известен, мoжно обойтись каскадом реплейсов
Добавлено через 7 минут и 56 секунд а поиск можно производить используя регекспы Это сообщение отредактировал(а) Zloxa - 5.5.2009, 20:36 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
||||
|
|||||
| DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 4 Всего: 44 |
||||
|
||||
| maddoc |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 364 Регистрация: 11.5.2005 Репутация: нет Всего: 1 |
спасибо всем. случай у меня тяжелый. все номера вносились пользователями через сайт. формата номера небыдло, поэтому кто как хотел, так и писал. а теперь срочно нужно по номеру телефона сделать поиск. вот я и в замешательстве.
набор символов известен только так: это все буквы, все символы и пробелы. склоняюсь к регекспам. но никогда их не использовал. был бы благодарен за наводку, как их применить. -------------------- "Безвыходных положений не бывает" (с) Камасутра |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
Наверняка дословно перевести на mySql не получится, потому лишь в качестве наводки:
Вольный первод регекспа: ^ начинаем поиск с начала строки [\D^+]* - далее должна(может) встретиться "не цифра" или не плюс ноль или более раз (8|+7)? - далее должна(может) встреиться восмерка или +7 ноль или один раз \D* - далее должна(может) встретиться "не цифра" ноль или более раз (495)? далее должна(может) встериться подстрока 495 ноль или один раз \D* - далее должна(может) встретиться "не цифра" ноль или более раз 1 - далее должна встретиться еденица \D* - далее должна(может) встретиться "не цифра" ноль или более раз 3 - далее должна встретиться тройка \D* - далее должна(может) встретиться "не цифра" ноль или более раз 2 - далее должна встретиться двойка ... и т.д. -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 4 Всего: 44 |
||||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Составление SQL-запросов | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |