如何定义VARCHAR列以支持特殊字符?

时间:2016-09-14 15:59:17

标签: db2 db2-luw

在我的表product中,我有一列:product_name,其类型为VARCHAR,大小为100:product_name varchar(100)

当我尝试插入一个包含如下特殊字符的名称时:

°%âä°%âä°%âä°%âä°%âä°%âä°%âä°%âä°%âä°%âä°%âä°%âä°%°°%âä°%âä°%âä°%âä°%âä°%âä°%âä°%âä°%âä°%âä°%âä°%âä°

我收到此错误:

ERROR : org.hibernate.util.JDBCExceptionReporter:78 : logExceptions() : Error for batch element #1: DB2 SQL Error: SQLCODE=-302, SQLSTATE=22001, SQLERRMC=null, DRIVER=3.57.82

我的product_name列可以有100个字符,对于我来说'是1个字符。

在DB2中是否有另一种类型(varchar除外),为product_name列设置它?

因此我可以执行此查询:

alter table product alter column product_name set data type otherType(100);

1 个答案:

答案 0 :(得分:1)

查看

STRING_UNITS

数据库配置参数。您可以使用它将默认字节长度切换为字符长度。这意味着char(100)将由DB2默认解释为100字节。由于unicode数据库中的字符可以跨越1-4个字节,因此100个字节不足以存储100个字符。切换到STRING_UNITS = CODEUNITS32后,在定义列varchar(100)时会得到100个字符。 所以你不需要另一种类型,而是另一种db cfg设置。