Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Регистронезависимый поиск / 9 сообщений из 9, страница 1 из 1
21.05.2011, 18:33
    #37272796
Troglodit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регистронезависимый поиск
DB2 9.7.
По поиску нашел, что можно через дополнительный столбец, но это жутко неудобно,да и база пухнет.
в примере нашел
Код: plaintext
1.
2.
CREATE DATABASE testdb 
   USING CODESET UTF- 8  TERRITORY US 
   COLLATE USING UCA500R1_LEN_S2
но для у меня для русских букв не работает.
...
Рейтинг: 0 / 0
22.05.2011, 09:16
    #37273081
const64+
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регистронезависимый поиск
Troglodit,

Можно при поиске выполнять преобразование - UCASE , LCASE
...
Рейтинг: 0 / 0
22.05.2011, 10:44
    #37273102
Troglodit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регистронезависимый поиск
Если я правильно понимаю, в этом случае про индексированный поиск (без дополнительного генерируемого поля) можно забыть.
...
Рейтинг: 0 / 0
23.05.2011, 09:42
    #37273856
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регистронезависимый поиск
TrogloditDB2 9.7.
По поиску нашел, что можно через дополнительный столбец, но это жутко неудобно,да и база пухнет.
в примере нашел
Код: plaintext
1.
2.
CREATE DATABASE testdb 
   USING CODESET UTF- 8  TERRITORY US 
   COLLATE USING UCA500R1_LEN_S2
но для у меня для русских букв не работает.Должно работать.
Что выдаёт:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select v, collation_key_bit(v, 'UCA500R1_LEN_S2')
from table(values
  'привет'
, 'Привет'
, 'ПРИВЕТ'
, 'hello'
, 'HELLO'
) t(v)
where v=
--'Hello'
'привет'
...
Рейтинг: 0 / 0
23.05.2011, 11:07
    #37274006
Troglodit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регистронезависимый поиск
Спасибо. Всё работает. Я думал данный скрипт работает только для латинских букв.
...
Рейтинг: 0 / 0
23.05.2011, 11:24
    #37274044
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регистронезависимый поиск
Можно почитать про возможности здесь:
Unicode Collation Algorithm based collations
Т.е. для русского можно было бы выбрать:
Код: plaintext
1.
2.
CREATE DATABASE testdb 
   USING CODESET UTF- 8  TERRITORY RU
   COLLATE USING UCA500R1_LRU_S2

Для игнорирования разницы:
- 'ё' и 'е'
- 'й' и 'и'
можно выбрать:
UCA500R1_LRU_S 1
...
Рейтинг: 0 / 0
23.05.2011, 11:42
    #37274088
Troglodit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регистронезависимый поиск
Спасибо, Марк.
...
Рейтинг: 0 / 0
25.05.2011, 00:19
    #37277631
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регистронезависимый поиск
Однако, если вы работаете с кириллицей и вам реально надо однобайтовую кодировку, при использовании юникода взамен generated columns (не очень удобны, но не так уж неудобны) база может распухнуть куда больше (это зависит от процента кириллических символов и по каким колонкам регистронезависимый поиск реально нужен). В самом деле,

1) (экстремальный случай) Если у вас исходная колонка CHAR(X) и в ней только русские символы, в юникодной базе она должна быть CHAR(2X) и размер индекса удваивается (точнее, конечно, удваиваются размеры значений в нём). Возможно, регистронезависимый поиск по ней не нужен. А если нужен, то в однобайтовой базе вместо одной колонки CHAR(2X) будет две CHAR(X), но индекс будет по одной, меньшего размера (имея в виду, что мы делаем его по uppercase'вой колонке).

2) (другой экстремальный случай) С другой стороны, пусть возьмём две колонки VARCHAR(X) (вторая - generated, ucase от первой) и эквивалент - одну VARCHAR(2X) в юникодной. Для русской строки в N байтов в таблице однобайтовой базы потребуется 2*N байтов плюс два VARCHAR-оверхеда. Для юникодной будет один VARCHAR-оверхед вместо двух, но размер ключа в индексе удвоенный. Для латинской же юникодная база однозначно должна быть выгоднее.

Для конкретных случаев надо считать.
...
Рейтинг: 0 / 0
25.05.2011, 14:01
    #37278480
Troglodit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регистронезависимый поиск
Увеличение размера базы в моем случае вторичны. А вот организация фильтрации таблицы/view и пр., для этого подойдет только регистронезависимый поиск, либо хранить все в верхнем регистре.
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Регистронезависимый поиск / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]