![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
SQL [D6, IB6.x]
Max Zyuzin © (2002-11-22 09:17:00)Приветствую всех!
Вот возникла проблемка... Делаю програмку и решил в ней организовать поиск
делаю запросы типа:
select * from MyTab
where MyField like "%вася%"
В общем есть желание организовать этот поиск без учета регистра (что бы и Вася и вАсЯ находился в результате запроса), сделал вот так...
select * from MyTab
where Upper(MyField) like "%ВАСЯ%"
Но оно не погло, т.к. Upper действует только на английские буквы (проверял). Есть какие нить мысли как с этим бороться? Или вообще посик по другому организовывать придется?
Max Zyuzin (2002-12-02 14:31:00) [1]>alice © (02.12.02 14:28)
http://www.ibase.ru/devinfo/ibrusfaq.htm
Замечательная статья..
alice (2002-12-02 14:28:00) [2]просто я пыталась с этим самым collation, но у меня не получилось никакого єффекта :(
Reindeer Moss Eater (2002-12-02 14:07:00) [3]>Reindeer Moss Eater (22.11.02 09:34)
Почему?
Потому что есть ограничение на длину индексируемого выражения. А при использовании Collation каждый символ занимает 3 байта
Max Zyuzin (2002-12-02 13:54:00) [4]>alice © (02.12.02 13:45)
У какой древний вопрос откопала :)
В общем а если мне надо искать по всем полям сразу??? Мне для каждого поля заводить дублера? А у меня еще там есть BLOb...
Вобще, я уже решил эту проблемму... с простыми строками боролся через Collation а с BLOb через UDF пришлось возится... вот.
alice (2002-12-02 13:45:00) [5]Можно сделать два поля, - в одном строка, введенная юзером, а в другом та же строка, - uppercase. Проиндексировать это второе поле и искать по нему, а выводить первое. Больше места, зато намного быстрее.
Max Zyuzin (2002-11-22 09:36:00) [6]>Reindeer Moss Eater (22.11.02 09:34)
Почему?
Reindeer Moss Eater (2002-11-22 09:34:00) [7]Collation лучше не использовать. Лучше использовать UDF
Max Zyuzin (2002-11-22 09:28:00) [8]Блин :( только что вычитал на Ibase.ru
примечание: эквивалентом character set WIN1251 является кодировка CYRL, однако использовать ее не рекомендуется, т.к. она не поддерживает UPPER
Max Zyuzin (2002-11-22 09:22:00) [9]При создании поля указывал чарсет win1251
Карелин Артем (2002-11-22 09:21:00) [10]Все работает, если при создании поля указывать виндовский чарсет и Collate соответствующие.