Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.24;
Скачать: CL | DM;

Вниз

Поиск в базе Интербэйс не чувствительный к регистру   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.012 c
4-76227
neodiX
2003-01-11 03:07
2003.02.24
WM_WINDOWPOSCHANGED как правильно на него ставить хук?


1-75995
Chlavik
2003-02-11 01:04
2003.02.24
ListBox


1-75910
Lizard
2003-02-14 12:40
2003.02.24
TtsGrid


3-75824
an
2003-02-07 03:50
2003.02.24
БД Access


1-75847
harismatik
2003-02-12 11:40
2003.02.24
Иконки файлов в дереве