DB2,特殊字符占2个字节
DB2, special character occupies 2 bytes
我在 char(1) 字段中插入特殊字符(á é í ú 或 ñ)时遇到问题。
CREATE TABLE sgc2."tabtest2"(field1 CHAR(1), field2 VARCHAR(1));
INSERT INTO sgc2."tabtest2" values('á', 'á');
错误:
Value "á" is too long.. SQLCODE=-433, SQLSTATE=22001, DRIVER=4.13.111
显然插入这些字符需要两个字节,而且作为字段只接受一个不能以插入结束。
有没有办法配置数据库,支持这些只占用1个字节的特殊字符?
显然您的数据库是使用 Unicode 代码集创建的,其中特殊字符由多个字节表示。如果您只需要表示有限范围的重音字符,您可以为相应的语言选择一种受支持的代码集,由 ISO-8859 指定 -- 详细信息 in the manual。您将必须使用适当的 CODESET
选项重新创建数据库,因为您无法更改现有数据库的代码集。
但是,您应该考虑更改表格,因为 Unicode 为您提供了更大的灵活性。 Unicode 数据库也可能是某些 DB2 特性的要求,例如 BLU Acceleration。
我在 char(1) 字段中插入特殊字符(á é í ú 或 ñ)时遇到问题。
CREATE TABLE sgc2."tabtest2"(field1 CHAR(1), field2 VARCHAR(1));
INSERT INTO sgc2."tabtest2" values('á', 'á');
错误:
Value "á" is too long.. SQLCODE=-433, SQLSTATE=22001, DRIVER=4.13.111
显然插入这些字符需要两个字节,而且作为字段只接受一个不能以插入结束。 有没有办法配置数据库,支持这些只占用1个字节的特殊字符?
显然您的数据库是使用 Unicode 代码集创建的,其中特殊字符由多个字节表示。如果您只需要表示有限范围的重音字符,您可以为相应的语言选择一种受支持的代码集,由 ISO-8859 指定 -- 详细信息 in the manual。您将必须使用适当的 CODESET
选项重新创建数据库,因为您无法更改现有数据库的代码集。
但是,您应该考虑更改表格,因为 Unicode 为您提供了更大的灵活性。 Unicode 数据库也可能是某些 DB2 特性的要求,例如 BLU Acceleration。