DB2 UTF8 存储配置

问题描述 投票:0回答:1

我有DB2数据库,并且我已经用

varchar(x)
定义了表,但似乎
x
- 不是字符数而是字节数。是否有可能以某种方式动态地解决问题?或者我应该更新我的表格吗?

database utf-8 db2 db2-luw
1个回答
2
投票

UTF-8 字符可以用 1 到 4 个字节长的字节序列表示,因此无法提前知道包含

x
Unicode 字符的 UTF-8 字符串的最大字节长度。

从 DB2 10.5 修复包 4(所谓的“坎昆版本”)开始,您可以在定义列时 指定字符串长度单位

VARCHAR(x OCTETS)
表示 x 字节;
VARCHAR(x CODEUNITS16)
表示 x 个两字节字符,
VARCHAR(x CODEUNITS32)
表示 x 个四字节字符。

如果您没有明确指定单位,则默认值源自

string_units
数据库配置参数和
NLS_STRING_UNITS
全局变量。

GRAPHIC
VARGRAPHIC
数据类型也遵循相同的单位规范,尽管它们的默认单位是 2 字节字符,而不是八位字节。

请注意,字符和 CLOB 列仍然受到与以前相同的长度限制:例如,

VARCHAR
列的最大长度为 32672 字节 (
OCTETS
)、16336
CODEUNITS16
或 8168
CODEUNITS32
.

© www.soinside.com 2019 - 2024. All rights reserved.