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

How to define VARCHAR columns to support special characters?

在我的 table 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);

查看

STRING_UNITS

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