2015-08-18 45 views
0

我试图从db2(as400)检索压缩值。我对DB2没有经验,完全不了解PACK值。IBM i(as400)DB2从java检索并解压缩值

有人可以提供我包装拆包算法。

我已经试过SELECT HEX(value) FROM.....。这是行不通的...

Thanx提前。

+0

packed每个数字只有4位。尝试将值转换为数字或整数bigint等适用。 – danny117

回答

0

问题解决了,

我们可以通过IBM500编码字符集标识符,在Java解密<BLOB>类型值。

//rsAS400.getBytes("F00001") this returns <BLOB> type value 

String value = new String(rsAS400.getBytes("F00001"), "IBM500"); 
0
select cast(myfield as numeric(18,6)) as myfield from mytable. 
+0

错误代码-604,SQL状态42611:[SQL0604]属性无效。 – Kandy

3

不要做任何特别的事情。 DB2在内部将一些数字存储为打包数据,但是当它将这些数字传递给您时,会将其解压缩。 select packed_numeric_column from db2_table...将工作得很好。

+0

它返回其加密格式 – Kandy

+0

那么它听起来好像列是一个BLOB。您需要了解BLOB最初是如何填充的。 DB2本身将无法告诉您;您需要与维护数据库的编程团队交谈。 –

+0

@Kandy您是否确定该列已加密? – user2338816