Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

SharSet и Collate - на что влияют [IB6.x]


Ura ©   (2002-05-02 14:20:00) 

Вопрос вдогонку по создании индекса при Collate. Индекс не создаеться из двух столбцов. Если Collate ибрать все ок.
Исли Я уберу коллате то что я потеряю - по идее НИЧЕГО. Так в чем же смысл Collate и SharSet?


Ura   (2002-05-07 11:57:00) [1]

Спасибо всем. Понял.
Сделал только CHARSET Win1251 без COLLATE. И индекс 50+50.
Для чего нужен уникальный индекс - заводской номер техники и код техники в реестре. А реестров несколько.


Desdechado   (2002-05-07 10:40:00) [2]

Если очень надо индекс по длинным полям, ставь Win1251 и делай UDF вместо UPPER, тогда не нужен COLLATE, но некоторые фокусы (не очень заметные) все-таки останутся.
Если тебе индекс нужен типа UNIQUE, т.е. для проверки, а не для упорядочивания при выборке, то такое решение вполне пройдет.


kaif   (2002-05-07 02:19:00) [3]

Я когда-то по наивности работал без CHARSET . Так вот, при упорядочивании имел вместо правильного:
Вася
вася
Геша
гоша
Неправильное:
Вася
Геша
вася
гоша.
То есть так, как расположены ASCII символы. Сначала все большие буквы "А".."Я", затем все маленькие, начиная с "а". Буква "Ё" вообще могла оказаться где попало.
Но самое важное, действительно, UPPER. Мало установить CHARSET. Без COLLATE upper не заработает. Просто не найдет ни хрена для русских выражений.
Ограничение на длину индекса себя оправдывает. Не так уж нужны индексированные строки более 84 символов.


Reindeer Moss Eater   (2002-05-06 15:26:00) [4]

Тебе же сказали по-русски, что если поле создано с Collate,
то индекс по нему может быть создан если длина поля <= 84 символа


Ura   (2002-05-06 15:24:00) [5]

Совсем запутался. А зачем вообще эти настройки. Может сделать лучше юникод. Если это все равно помощи не окажет ...


Reindeer Moss Eater   (2002-05-06 14:58:00) [6]

Я и говорю, что зависит


Desdechado   (2002-05-06 14:55:00) [7]

2 Reindeer Moss Eater (06.05.02 14:48)
> Если поле создано с collate то каждый символ занимает три байта, а не один.
число байт на символ зависит от Collate


Reindeer Moss Eater   (2002-05-06 14:48:00) [8]

Есть ограничение на длину индексного выражения для строки.
Если поле создано с collate то каждый символ занимает три байта, а не один.


Ura   (2002-05-06 14:45:00) [9]

Какое дело базе в какой кодировке Я храню данные? Или она может перекодировать кодировки т.е. данные лежат в WIN1251 а в Linux стоит кодировка Koи8. Я могу заставить перекодировать??? (написав какой-нибудь фильтр и подсоединив его к СУБД). Или нет.
Про коллате все ясно - это просто указатель на таблицу весов символов при сортировке .... ???


Johnmen   (2002-05-06 14:35:00) [10]

Смысл в применимости UPPER()...
Возможно есть и другие, но мною они не обнаружены...


Alexandr   (2002-05-06 14:35:00) [11]

см. статью про русские буквы на
www.ibase.ru

там очень популярно на этот счет написано


Desdechado   (2002-05-06 14:35:00) [12]

смысл Collate - некоторый способ упорядочивания при сортировке символов. он немного разный в разных Collate.
смысл Charset - возможность чтения/записи в определенной кодировке


Ura   (2002-05-06 14:23:00) [13]

Кто-нибудь знает или нет?


Наверх

Титульная страница Поиск, карта сайта Написать письмо