如何在 db2 查询中将字符集转换为 unicode
How to convert character set to unicode in db2 query
服务器:IBM i 系列AS/400运行DB2
客户端:Linux 使用 unixodbc
我在 DB2 数据库中有一个 table,其中有一列数据使用 CCSID 836(简体中文 EBCDIC)。我想获得 UTF-16 格式的结果,以便它们可以在其他系统上工作,但我很难找到正确的转换方式。
当我尝试时:
SELECT CAST(MYCOLNAME AS VARCHAR(100) CCSID 13491) FROM MY.TABLE
我收到错误:
SQL State: 22522
Vendor Code: -189
Message: [SQL0189] Coded Character Set Identifier 13491 not valid. Cause . . . . . : Coded Character Set Identifier (CCSID) 13491 is not valid for one of the following reasons: -- The CCSID is not EBCDIC. -- The CCSID is not supported by the system. -- The CCSID is not vaid for the data type. -- If the CCSID is specified for graphic data, then the CCSID must be a DBCS CCSID. -- If the CCSID is specified for UCS-2 or UTF-16 data, then the CCSID must be a UCS-2 or UTF-16 CCSID. -- If the CCSID is specified for XML data, then the CCSID must be SBCS or Unicode. It must not be DBCS or 65545.
如何将数据从 CCSID 836 转换为 UTF-16?我在 UNICODE_STR()
.
上同样不成功
我无法解释原因,但这是有效的:
SELECT CAST(MYCOLNAME AS VARCHAR(100) CCSID 935) FROM MY.TABLE
有问题的列的本机 CCSID 是 836,这看起来与 935 非常相似,所以我不明白其中的区别。但是 935 适合我。
服务器:IBM i 系列AS/400运行DB2
客户端:Linux 使用 unixodbc
我在 DB2 数据库中有一个 table,其中有一列数据使用 CCSID 836(简体中文 EBCDIC)。我想获得 UTF-16 格式的结果,以便它们可以在其他系统上工作,但我很难找到正确的转换方式。
当我尝试时:
SELECT CAST(MYCOLNAME AS VARCHAR(100) CCSID 13491) FROM MY.TABLE
我收到错误:
SQL State: 22522
Vendor Code: -189
Message: [SQL0189] Coded Character Set Identifier 13491 not valid. Cause . . . . . : Coded Character Set Identifier (CCSID) 13491 is not valid for one of the following reasons: -- The CCSID is not EBCDIC. -- The CCSID is not supported by the system. -- The CCSID is not vaid for the data type. -- If the CCSID is specified for graphic data, then the CCSID must be a DBCS CCSID. -- If the CCSID is specified for UCS-2 or UTF-16 data, then the CCSID must be a UCS-2 or UTF-16 CCSID. -- If the CCSID is specified for XML data, then the CCSID must be SBCS or Unicode. It must not be DBCS or 65545.
如何将数据从 CCSID 836 转换为 UTF-16?我在 UNICODE_STR()
.
我无法解释原因,但这是有效的:
SELECT CAST(MYCOLNAME AS VARCHAR(100) CCSID 935) FROM MY.TABLE
有问题的列的本机 CCSID 是 836,这看起来与 935 非常相似,所以我不明白其中的区别。但是 935 适合我。