2015-08-18 79 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