2017-01-30 9 views
0

Что означает «CHAR (1)» в базе данных DB2 с кодировкой UTF-8?DB2 UTF-8: Umlaut to CHAR (1)?

Могу ли я вставить специальный символ (например, тот, который занимает 2 октета в UTF-8) в столбец CHAR (1)?

Или CHAR (1) в UTF-8 всегда означает, что он имеет емкость для одного байта/октета, т. Е. Что вставка Umlaut в него не удастся?

Я прочитал эту интересную developerWorks статьи, но это будет глубоко на мой простой вопрос ...

ответ

4

Это зависит от многого. :)

DB2 представила code units, чтобы помочь в построении столбцов с строкой, которые основаны на количестве символов, а не на количестве байтов. В заявлении CREATE TABLE содержится обзор типов данных, а также объясняется CHAR и VARCHAR. Если используется число символов, DB2 принимает наихудший случай - 4 байта/октетов на символ - для вычислений длины.

Конфигурация базы данных string_units определяет, считается ли по умолчанию количество символов (CODEUNITS32) или количество байтов (SYSTEM).

Возвращаясь к вашему вопросу: Если вы ничего не указали, вставка специального символа, который требует 2 октета в CHAR (1), скорее всего, не удастся. Если CODEUNITS32 был указан, то он будет успешным.

+0

Спасибо! Это похоже на вопрос. Не могли бы вы добавить информацию, когда это было введено? В блоках кода документации отображаются с v10.5.0 ... – Bastl

+0

Да, это правильно. Вы можете использовать раскрывающийся список в документах для переключения на другие версии. 'string_units' доступен только для 10.5 и выше. –

+0

И только из любопытства: как это было сделано раньше? Фиксация кодовой страницы в CREATE TABLE так, чтобы 8 бит всегда было достаточно? – Bastl

 Смежные вопросы

  • Нет связанных вопросов^_^