Кодировка символьных данных таблицы
Спецификация

См. спецификацию пункта «Создание таблицы».

Синтаксические правила
  1. < Идентификатор кодировки > должен быть представлен в системной таблице $$$CHARSET.

  2. Для использования < встроенных кодировок > наличие в БД системной таблицы $$$CHARSET не обязательно.

Общие правила
  1. < Кодировка > задает имя кодовой страницы – набор символов, в которых будут храниться в БД все символьные данные типа CHAR, VARCHAR таблицы (за исключением столбцов, для которых задана индивидуальная кодировка, см. спецификацию < тип данных >).

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

  3. При выполнении SQL-запроса выборки данных, хранящиеся в заданной < кодировке > символьные данные результирующей выборки данных преобразуются в кодировку клиентского приложения.

  4. При создании системных таблиц для символьных данных всегда используется кодировка системного словаря (по умолчанию это кодировка DEFAULT, она может быть изменена командой SET DATABASE NAMES).

  5. Для обычных базовых таблиц, если < кодировка > символьных данных таблицы не задана:

    • используется кодировка, заданная командой SET NAMES;

    • если кодировка не задана командой SET NAMES, то используется кодировка, заданная командой SET DATABASE DEFAULT CHARACTER SET;

    • если обе указанные выше кодировки не заданы, то используется кодировка системного словаря БД, заданная командой SET DATABASE NAMES;

    • если не задана ни одна из кодировок предыдущих пунктов, то используется кодировка DEFAULT (кодировка поддерживает первые 128 символов кодировки "CP437").

  6. С помощью кодировки UTF-8 можно обеспечить многоязыковую поддержку пользовательского приложения в СУБД ЛИНТЕР без создания таблицы $$$CHARSET.

  7. При задании для столбца многобайтовой кодировки (UTF-8, EUC_JP и т.д.) следует иметь в виду, что размер столбца задаётся в байтах, а каждый символ в многобайтовой кодировке может занимать несколько байтов, т.е. в столбце с многбайтовой кодировкой может поместиться значительно меньше символов, чем размер этого столбца в байтах.

    Например, в кодировке UTF-32 китайские иероглифы представлены 4 байтами, поэтому строка длиной 40 байтов может содержать не более 10 символов-иероглифов.

Примеры
  1. Кодировка cp1251 будет преобразована к верхнему регистру и найдена в таблице $$$CHARSET (хранится в таблице как CP1251):

    create or replace table test character set cp1251 (ch char(10));
  2. Кодировка cp1251 будет использована как есть и не будет найдена в таблице $$$CHARSET (хранится в таблице как CP1251):

    create or replace table test character set "cp1251" (ch char(10));
  3. Кодировка KOI8-R будет использована как есть и будет найдена в таблице $$$CHARSET (кавычки нужны из-за дефиса в имени кодировки) (хранится в таблице $$$CHARSET как KOI8-R):

    create or replace table test character set "KOI8-R" (ch char(10));