Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.5 MB
Время: 0.009 c
1-75980
V-Isa
2003-02-12 15:42
2003.02.24
Окно, кот. не может быть перекрыто...


14-76089
Ketmar
2003-02-09 16:33
2003.02.24
постинг именинников


7-76204
sniknik
2002-12-24 20:37
2003.02.24
Нормальное завершение системы.


14-76181
Yoda
2003-02-08 21:56
2003.02.24
Delphi6-Crack


3-75787
Alexandr3
2003-02-06 12:11
2003.02.24
login failed





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский