DB2 VARCHAR unicode 数据存储

Posted

技术标签:

【中文标题】DB2 VARCHAR unicode 数据存储【英文标题】:DB2 VARCHAR unicode data storage 【发布时间】:2011-11-15 03:47:21 【问题描述】:

我们目前正在使用 VARCHAR 在 DB2 中存储文本数据,但是我们遇到了一个问题,即指定的 VARCHAR 长度与文本长度不同,因为在 DB2 中,指定的 VARCHAR 长度是 UTF-8 数据长度,该长度可能会有所不同存储的文本数据。例如,某些文本包含来自不同语言的字符,因此某些 500 个字符的文本无法保存在 VARCHAR(500) 等中。

现在我们计划迁移到 VARGRAPHIC。我需要知道使用 VARGRAPHIC 在 DB2 中存储 unicode 文本数据有哪些限制。 使用 VARGRAPHIC 有什么问题吗?

【问题讨论】:

【参考方案1】:

DB2 不检查数据是否实际上是双字节字符串,但它假定它必须是。通常驱动程序会为您进行适当的转换,但您可能有一天会遇到一些错误。不过这不太可能。

如果您在查询中使用联合数据库 Vargraphic 支持可能会完全失败。总体而言,关于 vargraphic 数据类型的错误报告数量有点高。对它的支持可能不像其他数据类型那样经过测试和尝试。

Vargraphic 将使用 unicode 数据库(即要求 UTF-8)使用 big-endian UCS-2,这意味着您对这些列的空间要求加倍。 Vargraphic 是 DB2 专有数据类型。如果有一天您从 DB2 迁移出去,您将不得不进行额外的转换。

【讨论】:

以上是关于DB2 VARCHAR unicode 数据存储的主要内容,如果未能解决你的问题,请参考以下文章

没有排序规则的 Unicode (UTF-16) 数据如何存储在 varchar 列中?

使用 unicode 的 DB2 数据库

char varchar

特殊字符(Unicode )字符的存储方式

哪个更好:在 NVARCHAR 或 VARCHAR 中存储包含 Unicode 字符的字符串? [复制]

Sql Server 字符串操作总结