Чтение онлайн

на главную - закладки

Жанры

Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ

Борри Хелен

Шрифт:

Чтобы указать используемую последовательность сортировки для значения в процессе сравнения, задайте предложение COLLATE после значения. Например, следующий фрагмент предложения WHERE задает конкретную последовательность сортировки для значения столбца в левой части операции сравнения при сравнении с входным параметром:

WHERE SURNAME COLLATE PXW SYRL >= :surname;

В этом случае при несоответствии последовательностей сортировки могут быть различные кандидаты

для "больше чем" при разных последовательностях сортировки.

Последовательность сортировки в критериях сортировки

Когда столбцы CHAR или VARCHAR упорядочиваются в операторе SELECT, может оказаться необходимым указать порядок сортировки для упорядочивания, особенно если столбцы в предложении упорядочивания используют различные последовательности сортировки.

Чтобы задать последовательность сортировки для использования в упорядочиваемых столбцах, в предложение ORDER BY добавьте COLLATE после имени столбца. Например, в следующем предложении ORDER BY задаются последовательности сортировки для двух столбцов:

. . .

ORDER BY SURNAME COLLATE PXW_CYRL, FIRST_NAME COLLATE PXW_CYRL;

Полный синтаксис предложения ORDER BY CM. в главе 23.

Последовательность сортировки в предложении GROUP BY

Когда столбцы CHAR или VARCHAR группируются в операторе SELECT, может оказаться необходимым указать порядок сортировки для группирования, особенно если столбцы в предложении группировки используют различные последовательности сортировки.

Чтобы задать последовательность сортировки для использования в группируемых столбцах, в предложение GROUP BY добавьте COLLATE после имени столбца. Например, в следующем предложении GROUP BY задаются последовательности сортировки для нескольких столбцов:

. . .

GROUP BY ADDR_3 COLLATE PXW_CYRL, SURNAME COLLATE PXW_CYRL, FIRST_NAME COLLATE

PXW_CYRL;

Полный синтаксис предложения GROUP BY CM. В главе 23.

Последовательность сортировки и размер индекса

Если для набора символов вы задаете недвоичную сортировку (отличную от сортировки по умолчанию), то размер индексного ключа может стать больше, чем хранимая строка, если сортировка включает правила предшествования второго, третьего или четвертого порядка.

Например, недвоичные сортировки для IS08859_1 используют полные словари с пробелами и знаками пунктуации с четырьмя порядками значений.

* Первый порядок: А отличается от В.

* Второй порядок: А отличается от А.

* Третий порядок: А отличается от а.

* Четвертый порядок: важным является тип знака пунктуации (дефис, пробел, апостроф).

Например:

Greenfly

Green fly

Green-fly

Greensleeves

Green sleeves

Green spot

Если

же пробелы и знаки пунктуации трактуются как символы первого порядка, то тот же самый список будет отсортирован следующим образом:

Greenfly

Greensleeves

Green fly

Green sleeves

Green spot

Green-fly

Как недвоичные сортировки могут ограничить размер индекса

Когда создается индекс, он использует последовательности сортировки, определенные для каждого текстового фрагмента индекса. При использовании однобайтового набора символов ISO8859_1 с сортировкой по умолчанию структура индекса может содержать приблизительно 252 символа (меньше, если это многосегментный индекс). Если же вы выбираете недвоичную сортировку для ISO8859_1 (в том числе это относится к сортировке PXW_CYRL кодировки WIN1251), то структура индекса может содержать только 84 символа, несмотря на то, что символы в индексируемом столбце занимают только один байт каждый.

! ! !

ВНИМАНИЕ! Некоторые сортировки ISO8859_1, например DE_DE, требуют в среднем три байта на символ для индексируемого столбца.

. ! .

Пользовательские наборы символов и сортировки

Существует возможность создать собственные наборы символов и сортировки и заставить сервер Firebird загружать их из библиотеки, которая должна называться fbintl2, чтобы ее можно было распознать и подключить.

Также можно реализовать пользовательские наборы символов и сортировки с использованием функций, определенных пользователем (UDF) для транслитерации входных данных. Сервер Firebird 1.5 автоматически использует UDF со специальными именами, чтобы их можно было распознать как наборы символов и сортировки. Имя 'USER_CHARSET_nnn' указывает набор символов, в то время как 'USER_TRANSLATE_nnn_nnn' и 'USER_TEXTTYPE_nnn' указывает набор символов плюс последовательность сортировки (nnn представляет трехсимвольное число, обычно в диапазоне от 128 до 254).

Это сложная тема, выходящая за пределы данной книги. Разработчик для fbintl2 встраиваемых пользователем наборов символов David Brookestone Schnepper создал свободно распространяемый комплект "сделай сам", который содержит пример кода С, отображения и инструкции, доступный наПоскольку комплект поставки содержит ясные инструкции по созданию наборов символов, он также будет вам полезным справочником, если вы планируете использовать подход UDF для реализации пользовательского набора символов.

Поделиться:
Популярные книги

Блуждающие огни 4

Панченко Андрей Алексеевич
4. Блуждающие огни
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Блуждающие огни 4

Я сделаю это сама

Кальк Салма
1. Магический XVIII век
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Я сделаю это сама

Флеш Рояль

Тоцка Тала
Детективы:
триллеры
7.11
рейтинг книги
Флеш Рояль

Боярышня Дуняша

Меллер Юлия Викторовна
1. Боярышня
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Боярышня Дуняша

Газлайтер. Том 8

Володин Григорий
8. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 8

Леди для короля. Оборотная сторона короны

Воронцова Александра
3. Королевская охота
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Леди для короля. Оборотная сторона короны

На границе империй. Том 10. Часть 1

INDIGO
Вселенная EVE Online
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 1

Черный Маг Императора 5

Герда Александр
5. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Черный Маг Императора 5

Невест так много. Дилогия

Завойчинская Милена
Невест так много
Любовные романы:
любовно-фантастические романы
7.62
рейтинг книги
Невест так много. Дилогия

Идеальный мир для Социопата 3

Сапфир Олег
3. Социопат
Фантастика:
боевая фантастика
6.17
рейтинг книги
Идеальный мир для Социопата 3

Повелитель механического легиона. Том VIII

Лисицин Евгений
8. Повелитель механического легиона
Фантастика:
технофэнтези
аниме
фэнтези
5.00
рейтинг книги
Повелитель механического легиона. Том VIII

Наследник павшего дома. Том I

Вайс Александр
1. Расколотый мир
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Наследник павшего дома. Том I

Крещение огнем

Сапковский Анджей
5. Ведьмак
Фантастика:
фэнтези
9.40
рейтинг книги
Крещение огнем

Камень Книга двенадцатая

Минин Станислав
12. Камень
Фантастика:
боевая фантастика
городское фэнтези
аниме
фэнтези
5.00
рейтинг книги
Камень Книга двенадцатая