关于从SQL Server
到DB2
的数据复制,我有以下问题:
在DB2
我有一个包含(为简单起见)两列的表:COL1
和COL2
。
COL1
定义为CHAR(20)
。 COL2
定义为CHAR(10)
。
COL1
,例如使用以下SQL查询"abcdefghij"
到"6162636465666768696A"
或"1111111111"
到"31313131313131313131"
:
CONVERT(char(20), cast(@InputString as binary) 2)
其中@InputString
为"abedefghij"
。
换句话说,COL1包含十六进制值,但是作为字符串(对不起,如果措辞不正确)。
我需要将十六进制值转换回字符串并将此值放入COL2
。
DB2
上的SQL查询应该如何进行转换?我知道如何在SQL Server
上执行此操作,但不在DB2
上执行此操作。
注意:十六进制值未使用"0x"
预先修复的原因是因为样式2在CONVERT
语句中使用。
答案 0 :(得分:5)
select hex('A') from sysibm.sysdummy1;
返回41。 和
select x'41' from sysibm.sysdummy1;
给你'A'。因此,您可以将其置于for
循环中并循环遍历每对十六进制字符以获得原始字符串。或者你可以编写自己的unhex函数。
取自http://www.dbforums.com/db2/1627076-display-hex-columns.html
答案 1 :(得分:4)
DB2具有内置编码/解码功能。
对于OPs问题,请使用....
select CAST(ColumnName as char(20) CCSID 37) as ColumnName from TableName where SomeConditionExists
答案 2 :(得分:0)
这是我遇到问题最密切的主题之一:
我已经失去了两天的时间来弄清楚如何使用SQL Developer迁移存储在DB2 BLOB字段中的XML文件。 (是的,迁移到SQL Developer并从中执行查询 - 我们正在从DB2迁移数据到Oracle,因此我们使用了这个工具)!
如何显示存储在BLOB中的XML文件/字符串?
让我们先来看看问题是什么:
在查询中选择时,得到:
铸造时,如:
select CAST(BLOBCOLUMN as VARCHAR(1000)) from TABLE where id = 100;
输出是在HEX中:
错误地找到了解决方案:
答案 3 :(得分:0)
我用它来将 FOR BIT DATA 转换为字符:
cast (colvalue as varchar(2000) ccsid ebcdic for sbcs data)