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

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

Жанры

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

Борри Хелен

Шрифт:

Таблица 11.1. Специальные наборы символов

Имя

Свойства

NONE

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

OCTETS

Байты, которые не интерпретируются как символы. Полезен для хранения

двоичных данных

ASCII

Значения 0-127 определены как ASCII. Значения за пределами этого диапазона не являются символами, но поддерживаются. Firebird совершенно либерален относительно транслитерации байтов в диапазоне 0-127 символов ASCII

UNICODE_FSS

Разработчикам нужно знать, что он эффективен при реализации UTF8. Пользователям нужно знать, что он может быть использован для хранения символов UCS16, но не UCS32 (может занимать до шести байтов на символ). Недоступна ни одна последовательность сортировки, кроме двоичной последовательности по умолчанию

ISO8859_1 (LATIN_1) и WIN1252

Набор символов ISO8859_1 часто указывается для поддержки европейских языков. ISO8859_1, также известный как LATIN1, является истинным подмножеством WIN 1252. Microsoft добавил символы в позиции, которые ISO специфицировал как не являются символами (не "неопределенные", но указанные как "не символы"). Firebird поддерживает как WIN 1252, так и ISO8859_1. Вы всегда можете выполнить транслитерацию из ISO8859_1 в WIN 1252, но транслитерация WIN 1252 в ISO8859_1 может вызвать ошибки.

Наборы символов для Microsoft Windows

Пять наборов символов поддерживают приложения клиентов Windows, такие как Paradox for Windows. Это наборы символов WIN1250, WIN1251, WIN1252, WIN1253 и WIN 1254.

Благодаря историческим связям Borland с Paradox и dBase, имена последовательностей сортировки этих наборов символов, специфичных для Paradox for Windows, начинаются с "PXW" и соответствуют языковым драйверам Paradox/dBase, поставляемым с ныне устаревшим Borland Database Engine (BDE).

Понимание наборов символов WINnnn

Последовательности сортировки PXW действительно реализуют сортировку для Paradox и dBase, включая все ошибки. Одно исключение: PXW_CSY исправлен в Firebird 1.0. Следовательно, базы данных InterBase, которые его используют, например в индексах, не являются совместимыми с Firebird.

Более подробную информацию о наборах символов Windows и сортировках Paradox for Windows см. в соответствующей документации по BDE и драйверам.

Список международных наборов символов и последовательностей сортировки, поддерживаемые Firebird, см. в приложении 8.

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

Каждый набор символов имеет последовательность сортировки (collate) по умолчанию, которая определяет, как символы сортируются и упорядочиваются. Последовательность сортировки определяет правила предшествования, которые Firebird использует для сортировки, сравнения и транслитерации символьных данных.

Поскольку каждый набор символов имеет свое возможное подмножество

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

Последовательность сортировки для столбца задается при создании или модификации столбца. Если устанавливается на уровне столбца, то перекрывает любую установку последовательности сортировки на уровне домена.

Отображение доступных последовательностей сортировки

Следующий запрос дает список наборов символов с доступными последовательностями сортировки:

SELECT

С. RDB$CHARACTER_SET_NAME,

CO.RDB$COLLATION_NAME,

CO.RDB$COLLATION_ID,

CO.RDB$CHARACTER_SET_ID,

CO.RDB$COLLATION_ID * 256+ CO.RDB$CHARACTER_SET_ID AS TEXTTYPEID

FROM RDB$COLLATIONS CO

JOIN RDB$CHARACTER_SETS С

ON CO.RDB$CHARACTER_SET_ID = C.RDB$CHARACTER_SET_ID;

Именование последовательностей сортировки

Многие имена последовательностей Firebird используют соглашение по именованию XX_YY, где XX - двухбуквенный код языка, a YY - двухбуквенный код страны. Например, DE_DE - имя последовательности для немецкого языка, используемого в Германии, FR_FR - для французского языка, используемого во Франции, FR_CA - для французского языка, используемого в Канаде.

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

В этом разделе описывается задание последовательности сортировки для наборов символов в доменах и столбцах таблиц, в строковых сравнениях, в предложениях ORDER BY и GROUP BY.

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

Когда в таблице создается столбец CHAR или VARCHAR с использованием CREATE TABLE или ALTER TABLE, последовательность сортировки для столбца может быть задана с использованием предложения COLLATE. Предложение COLLATE особенно полезно для таких наборов символов, как ISO8859_1 и DOS437, которые поддерживают множество различных последовательностей сортировки.

К примеру, следующий динамический оператор ALTER TABLE добавляет новый столбец в таблицу и задает и набор символов, и последовательность сортировки:

ALTER TABLE 'EMP_CANADIEN'

ADD ADDRESS VARCHAR(40) CHARACTER SET WIN1251 NOT NULL COLLATE PXW_CYRL;

Полный синтаксис ALTER TABLE см. В главе 16.

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

Может оказаться необходимым задать последовательность сортировки при сравнении значений CHAR или VARCHAR в предложении WHERE, если сравниваемые значения используют различные последовательности сортировки, и это влияет на результат.

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

Блуждающие огни 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
рейтинг книги
Камень Книга двенадцатая