如何在 DDL 中建立 CODEUNIT32 (CHAR SET =“UTF-32”?

如何在 DDL 中建立 CODEUNIT32 (CHAR SET =“UTF-32”?

我正在尝试对 VARCHAR(120) 列的请求进行建模,但实际上将存储 480 个字节。

480 的长度被确定为 VARCHAR (120) = 120 x 4 = 480 字节。这是由于字符串单元规范代码单元 32。这意味着每 1 个字符将占用 4 个字节。

我不确定 DDL 的语法。我的研究表明,在创建表期间应该有一个语句将字符集设置为 UTF-32,但我不确定。这是针对 DB2 Mid-Tier(非大型机)的

这是我发现的东西,但我不确定它是否有效,也不确定它如何COLLATE工作。

ALTER TABLE table_name   
MODIFY column_name VARCHAR(255) 
CHARACTER SET utf8 
COLLATE utf8_unicode_ci;

任何帮助,将不胜感激!

答案1

无法声明 UTF-32 类型的列。

您需要将列定义为VARCHAR(480),然后CODEUNITS32 在访问该列时使用将其转换为 UTF-32。

例子:

SELECT CHARACTER_LENGTH(NAME,CODEUNITS32) FROM T1 WHERE NAME = 'Jürgen';
SET :POSITION = LOCATE_IN_STRING('Jürgen lives on Hegelstraße','ß',-1,CODEUNITS32);

IBM 的一些参考资料:

答案2

对于 DB2 LUW,只需将列声明为VARCHAR(120 CODEUNITS32)。Db2 将以 UTF-8 格式存储数据,最多只允许 120 个字符,但最多允许 480 个字节。

create table T(C VARCHAR(e CODEUNITS32))
insert into t values '€£

相关内容