Форум: "Базы";
Текущий архив: 2003.02.24;
Скачать: [xml.tar.bz2];
Вниз
Поиск в базе Интербэйс не чувствительный к регистру Найти похожие ветки
← →
korvin (2003-02-05 08:47) [0]Всё почти очень просто, делаю поиск текста
like ""%"+EKlient.Text+"%"" (что-то вроде этого).
Но он чувствителен к регистру. Как эту чувствительность убрать?
← →
KA_ (2003-02-05 08:56) [1]Вот так:
...
where UPPER(FIELD1) like ""%"+UPPER(EKlient.Text)+"%""
← →
Sergey Masloff (2003-02-05 09:02) [2]KA_
А еще лучше при записи в базу приводить все к одному регистру (без разницы какому). Тогда есть возможность использования индексов. Хотя автору вопроса судя по конструкции ""%"+EKlient.Text+"%"" индексы глубоко по фиг ;-)
← →
Sergey13 (2003-02-05 09:18) [3]2Sergey Masloff (05.02.03 09:02)
>А еще лучше при записи в базу приводить все к одному регистру (без разницы какому).
Это только если он (регистр) не важен. Не всякий юзер захочет иметь текстовые данные в таком "сг(л)аженом" виде.
← →
KA_ (2003-02-05 09:19) [4]2 Sergey Masloff:
Ну это не всегда возможно. Пользователь может обидиться, если наберет "меня зовут Вася", а получит в ответ "меня зовут вася" :)
← →
Кот Бегемот (2003-02-05 09:19) [5]Деточка - а знаешь ли ты что слово "Клиент" - пишеться вот так вот -
Client
А еще не забывай при работе с кириллицей добавлять
upper(sys_client collate PXW_CYRL)
:)))
← →
AlexSerp (2003-02-05 09:26) [6]upper(field_name collate pxw_cyrl) containing ""%"+UPPER(EKlient.Text)+"%""
""%"+UPPER(EKlient.Text)+"%"" как я понимаю это динамически подставляется в Делфи. Здесь лучше применить AnsiUpperCase(EKlient.Text).
Если нет, то UPPER(EKlient.Text collate pxw_cyrl).
Саня
← →
Sergey Masloff (2003-02-05 09:30) [7]Sergey13 ©
>Не всякий юзер захочет...
А он об этом узнает? Разницу между ХРАНИМЫМИ и ОТОБРАЖАЕМЫМИ пользователю данными объяснять не надо же ж? ;-)
KA_
Написать функцию InitCapFirst - дело двух минут. Зато представь себе поиск без индекса хотя бы на паре сотен тысяч записей... Мне кажется пользователь огорчится гораздо больше если каждый поиск будет по n минут.
← →
Sergey13 (2003-02-05 09:33) [8]2Sergey Masloff (05.02.03 09:30)
>А он об этом узнает? Разницу между ХРАНИМЫМИ и ОТОБРАЖАЕМЫМИ пользователю данными объяснять не надо же ж? ;-)
Как это?
← →
Sergey Masloff (2003-02-05 09:45) [9]Sergey13 ©
Ну то есть как? Хранится "иван иванович иванов" выводится на просмотр пользователю "Иванов И.И." или "Иванов Иван Иванович" или еще как захочет пользователь. Но хранить это в базе совсем необязательно.
← →
Sergey13 (2003-02-05 09:55) [10]2Sergey Masloff (05.02.03 09:45)
А если надо хранить - ЗАО "ля ля Тополя и Березы" ? И именно так. По какому алгоритму приводить к нужному.
← →
Max Zyuzin (2003-02-05 09:56) [11]>korvin © (05.02.03 08:47)
http://www.ibase.ru/devinfo/ibrusfaq.htm
← →
Sergey Masloff (2003-02-05 10:04) [12]Sergey13 ©
>А если надо хранить - ЗАО "ля ля Тополя и Березы" ? И именно так.
Алгоритм не так сложен как кажется. Скажу так - у меня этот вопрос решен. Не скажу что за 2 часа написано - пара дней подумать и день написать. Но это один раз ведь.
Кстати, у нас есть и эвристический поиск - то есть пользователь набрав "березы и тополя" найдет нужные "Тополя и Березы". Даже если они заведены как Topolya & Beryozy Ltd. Но это уже растопыривание пальцев ;-))
← →
Dmitry W. (2003-02-05 10:08) [13]where FIELD1 containing "EKlient.Text"
containing не чуствителен к регистру
← →
Sergey13 (2003-02-05 10:32) [14]2Sergey Masloff (05.02.03 10:04)
Вот ты про индексы начал. Да индексы при этом не фурычат. Они вроде вообще при %ля-ля% не работают, только при ля-ля%. Но это так, к слову.
По сути. Ну выиграл ты сукунду(1,2,3) при поиске - согласен, может быть. Но если поиск по подстроке - это работа как правило нечастая, то выборка и вывод на экран/бумагу - это работа постоянная. Вот и прикинь сколько ты теряешь при каждом обращении к таким "оптимизированным" данным. ИМХО в 99% случаев будет явный пригрышь в производительности.
← →
Sergey Masloff (2003-02-05 10:40) [15]Sergey13 ©
>Они вроде вообще при %ля
ну так я про это говорил...
>Но если поиск по подстроке - это работа как правило нечастая, то выборка и вывод на экран/бумагу
Дык а при выборке каким боком регистр влияет? - это мимо
Вывод на экран - дак на него не 100000 записей выводится. А 10. И преобразование делается не на сервере же ж. А на клиенте это очень быстрая операция. (И на сервере быстрая, но у сервера клиентов много). A c UPPER преобразование делается с КАЖДОЙ записью да еще с NATURAL в плане. Тут не о секундах речь пойдет ;-) Такие дела.
>ИМХО в 99% случаев будет явный пригрышь в производительности
Неа, не будет ;-) Тоже ИМХО
← →
AlexSerp (2003-02-05 10:41) [16]Dmitry W. (05.02.03 10:08)
containing чуствителен к регистру
Я там в своем посте выше ошибся: при containing не надо знаков - %
Саня
← →
Dimedrol (2003-02-05 10:46) [17]Удалено модератором
Примечание: Задай этот ответ в отдельной ветке,
← →
Max Zyuzin (2003-02-05 10:49) [18]Удалено модератором
← →
Sergey13 (2003-02-05 10:53) [19]2Sergey Masloff (05.02.03 10:40)
>ну так я про это говорил...
Сори.
>Дык а при выборке каким боком регистр влияет? - это мимо
Дык юзеру то хочется видеть то как он ввел, а не то как там хранится.
>Вывод на экран - дак на него не 100000 записей выводится. А 10.
Но 1000 раз за день. Те-же яйца, только в профиль. 8-)
>И преобразование делается не на сервере же ж.
Чтож вы так сервера то не любите? 8-) Он чай тоже не железный.
>(И на сервере быстрая, но у сервера клиентов много).
Вот именно.
>ИМХО в 99% случаев будет явный пригрышь в производительности
Неа, не будет ;-) Тоже ИМХО
В общем сойдемся как в вопросе про вкус и цвет жидкой водки. 8-)
← →
Dimedrol (2003-02-05 11:58) [20]2 Max Zyuzin ©</B1>
А нафига тогда 2 запроса ?!
Тогда уж и выбирай первым запросом нужные поля,
а второй уж точно не ускорит работу,
если и так уж выбрано то что нужно.
← →
Max Zyuzin (2003-02-05 12:37) [21]Offtop : первый раз мой ответ был удален модератором :-)
Тот Query в котором я делал Locate у меня данные отображает.
← →
Dimedrol (2003-02-05 18:38) [22]Ыыыыыы ну тогда ясно...
Мне-то просто нужно найти данные,
а уж отобразить-то я и с текущего Запроса могу....
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.02.24;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.009 c