在DB2上将HEX值转换为CHAR

Kar*_*bæk 2 sql db2

与数据复制相关SQL Server,DB2我有以下问题:

DB2我有一个包含(为简单起见)的表两列:COL1COL2.

COL1被定义为CHAR(20).COL2被定义为CHAR(10).

COL1通过使用以下SQL查询将字符串转换为十六进制(例如,转换"abcdefghij""6162636465666768696A""1111111111"转到)来从SQL复制"31313131313131313131":

CONVERT(char(20), cast(@InputString as binary) 2)
Run Code Online (Sandbox Code Playgroud)

@InputString会在哪里"abedefghij".

换句话说,COL1包含十六进制值,但是作为字符串(对不起,如果措辞不正确).

我需要将十六进制值转换回字符串并将此值放入COL2.

SQL查询应DB2该做什么来进行转换?我知道怎么做SQL Server,但不是DB2.

注意:十六进制值未预先修复"0x"的原因是因为在CONVERT语句中使用了样式2 .

MrG*_*MrG 5

select hex('A') from sysibm.sysdummy1; 
Run Code Online (Sandbox Code Playgroud)

返回41.和

select x'41' from sysibm.sysdummy1;
Run Code Online (Sandbox Code Playgroud)

给你'A'.所以你可以把它放在一个for循环中并循环遍历每对十六进制字符以得到你原来的字符串.或者你可以编写自己的unhex函数.

取自http://www.dbforums.com/db2/1627076-display-hex-columns.html


Eri*_*ric 5

DB2具有内置的编码/解码。

对于OP的问题,请使用...。

select CAST(ColumnName as char(20) CCSID 37) as ColumnName from TableName where SomeConditionExists
Run Code Online (Sandbox Code Playgroud)

http://www-01.ibm.com/support/knowledgecenter/SSEPEK_10.0.0/com.ibm.db2z10.doc.intro/src/tpc/db2z_introcodepage.dita