我試圖從db2(as400)檢索壓縮值。我對DB2沒有經驗,完全不瞭解PACK值。IBM i(as400)DB2從java檢索並解壓縮值
有人可以提供我包裝或拆包算法。
我已經試過SELECT HEX(value) FROM.....
。這是行不通的...
Thanx提前。
我試圖從db2(as400)檢索壓縮值。我對DB2沒有經驗,完全不瞭解PACK值。IBM i(as400)DB2從java檢索並解壓縮值
有人可以提供我包裝或拆包算法。
我已經試過SELECT HEX(value) FROM.....
。這是行不通的...
Thanx提前。
問題解決了,
我們可以通過IBM500編碼字符集標識符,在Java解密<BLOB>
類型值。
//rsAS400.getBytes("F00001") this returns <BLOB> type value
String value = new String(rsAS400.getBytes("F00001"), "IBM500");
select cast(myfield as numeric(18,6)) as myfield from mytable.
錯誤代碼-604,SQL狀態42611:[SQL0604]屬性無效。 – Kandy
不要做任何特別的事情。 DB2在內部將一些數字存儲爲打包數據,但是當它將這些數字傳遞給您時,會將其解壓縮。 select packed_numeric_column from db2_table...
將工作得很好。
它返回
那麼它聽起來好像列是一個BLOB。您需要了解BLOB最初是如何填充的。 DB2本身將無法告訴您;您需要與維護數據庫的編程團隊交談。 –
@Kandy您是否確定該列已加密? – user2338816
packed每個數字只有4位。嘗試將值轉換爲數字或整數bigint等適用。 – danny117