与数据复制相关SQL Server,DB2我有以下问题:
上DB2我有一个包含(为简单起见)的表两列:COL1和COL2.
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 .
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
DB2具有内置的编码/解码。
对于OP的问题,请使用...。
select CAST(ColumnName as char(20) CCSID 37) as ColumnName from TableName where SomeConditionExists
Run Code Online (Sandbox Code Playgroud)