![]() |
|
Модераторы: skyboy |
![]()
|
|
| z-END |
|
|||
![]() прафесар™ ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: нет Всего: 102 |
можно ли организовать поиск, без учета символов? т.е.
в базе есть поле номер 8-123-456-78-90, пользователь вводит 81234567890 или 8 123 456 78 90 и находит соответствующую запись.? -------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
|||
|
||||
| rodnover |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 223 Регистрация: 7.4.2009 Репутация: нет Всего: 10 |
Только если использовать UDF с возможностью замены по Regexp'ам. Например,
http://www.mysqludf.org/lib_mysqludf_preg/ Удалять в обоих случаях лишние символы и их сравнивать. Либо хранить в базе номера уже без лишних символов, а в строке введенной пользователем удалять лишние символы. Или вот так, но это очень громоздко:
Это сообщение отредактировал(а) rodnover - 14.9.2011, 11:21 |
|||
|
||||
| z-END |
|
|||
![]() прафесар™ ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: нет Всего: 102 |
с этим увы, не получится. по мимо телефонов, нужен поиск еще по артикулам.. например артикул ABC-1222.01/165 должен находиться при запросах - ABC 122201 165 - ABC122201165 т.е. вместо символа может быть любой символ в т.ч. и пробел, или ничего. печально.. это сторонняя библиотека, которую нужно отдельно подключать. -------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
|||
|
||||
| rodnover |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 223 Регистрация: 7.4.2009 Репутация: нет Всего: 10 |
Тогда вырезанием подстрок или удалением лишних символов. :(
|
|||
|
||||
| z-END |
|
|||
![]() прафесар™ ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: нет Всего: 102 |
только что мысль в голову пришла:
задача найти ABC-1222.01/165 пользователь вводит: ABC122201165 выполняем запрос ... LIKE '%A%B%C%1%2%2%2%0%1%1%6%5%' (т.е. каждый символ экранируем %) тем самым мы включаем все символы... вот тока не могу понять, велика ли вероятность поймать ошибочное поле? -------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
|||
|
||||
| AndreyIQ |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 185 Регистрация: 5.2.2007 Репутация: 2 Всего: 8 |
Поймаешь вместо ABC-1222.01/165: ABC-11222.01/165 и AABC-1222.01/165 и ABC-1222.101/165 и т.д. Это сообщение отредактировал(а) AndreyIQ - 14.9.2011, 12:26 |
|||
|
||||
| rodnover |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 223 Регистрация: 7.4.2009 Репутация: нет Всего: 10 |
||||
|
||||
| z-END |
|
|||
![]() прафесар™ ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: нет Всего: 102 |
нет, символы это я из головы взял, фактически у каждого производителя своя номенклатура и способ ее задания. по этому и ищу какой-то универсальный способ.. -------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
|||
|
||||
| AndreyIQ |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 185 Регистрация: 5.2.2007 Репутация: 2 Всего: 8 |
ИМХО самый правильный вариант, предложенный Вам, rodnover'ом
|
||||
|
|||||
| z-END |
|
|||
![]() прафесар™ ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: нет Всего: 102 |
с данными приходящими от пользователя все понятно - вырезать регуляркой и все. а как быть с миллионом строк в базе данных? поштучно ВСЕ перебирать чтоли? -------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
|||
|
||||
| AndreyIQ |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 185 Регистрация: 5.2.2007 Репутация: 2 Всего: 8 |
Ранее предложенные варианты с UDF или
или написать хранимую процедуру Это сообщение отредактировал(а) AndreyIQ - 14.9.2011, 14:57 |
|||
|
||||
| rodnover |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 223 Регистрация: 7.4.2009 Репутация: нет Всего: 10 |
Можно не update, а
Либо создать еще одно поле, в которое в триггере записывать строку без лишних символов. В итоге получится 2 варианта: один для поиска, другой для отображения. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MySQL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |