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

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

Жанры

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, если сравниваемые значения используют различные последовательности сортировки, и это влияет на результат.

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

Измена. (Не)любимая жена олигарха

Лаванда Марго
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. (Не)любимая жена олигарха

Хозяйка дома в «Гиблых Пределах»

Нова Юлия
Любовные романы:
любовно-фантастические романы
5.75
рейтинг книги
Хозяйка дома в «Гиблых Пределах»

Фиктивный брак

Завгородняя Анна Александровна
Фантастика:
фэнтези
6.71
рейтинг книги
Фиктивный брак

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

INDIGO
8. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
6.13
рейтинг книги
На границе империй. Том 7. Часть 2

Держать удар

Иванов Дмитрий
11. Девяностые
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Держать удар

Флеш Рояль

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

Драконий подарок

Суббота Светлана
1. Королевская академия Драко
Любовные романы:
любовно-фантастические романы
7.30
рейтинг книги
Драконий подарок

Зауряд-врач

Дроздов Анатолий Федорович
1. Зауряд-врач
Фантастика:
альтернативная история
8.64
рейтинг книги
Зауряд-врач

По дороге на Оюту

Лунёва Мария
Фантастика:
космическая фантастика
8.67
рейтинг книги
По дороге на Оюту

Мастер 5

Чащин Валерий
5. Мастер
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Мастер 5

Не лечи мне мозги, МАГ!

Ордина Ирина
Фантастика:
городское фэнтези
попаданцы
фэнтези
5.00
рейтинг книги
Не лечи мне мозги, МАГ!

Измена. Право на семью

Арская Арина
Любовные романы:
современные любовные романы
5.20
рейтинг книги
Измена. Право на семью

Крепость над бездной

Лисина Александра
4. Гибрид
Фантастика:
боевая фантастика
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Крепость над бездной

Неудержимый. Книга XXI

Боярский Андрей
21. Неудержимый
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Неудержимый. Книга XXI