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

Можно при поиске выполнять преобразование - UCASE , LCASE
...
Рейтинг: 0 / 0
Регистронезависимый поиск
    #37273102
Troglodit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если я правильно понимаю, в этом случае про индексированный поиск (без дополнительного генерируемого поля) можно забыть.
...
Рейтинг: 0 / 0
Регистронезависимый поиск
    #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
Регистронезависимый поиск
    #37274006
Troglodit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо. Всё работает. Я думал данный скрипт работает только для латинских букв.
...
Рейтинг: 0 / 0
Регистронезависимый поиск
    #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
Регистронезависимый поиск
    #37274088
Troglodit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, Марк.
...
Рейтинг: 0 / 0
Регистронезависимый поиск
    #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
Регистронезависимый поиск
    #37278480
Troglodit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Увеличение размера базы в моем случае вторичны. А вот организация фильтрации таблицы/view и пр., для этого подойдет только регистронезависимый поиск, либо хранить все в верхнем регистре.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Регистронезависимый поиск
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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