2016-06-14 97 views
0

我正在尋找一個DB2函數來計算大CLOB值上的散列,以便快速跟蹤更改。其他發動機的功能如CHECKSUM,CRC32MD5。 LUW中的函數是GET_HASH_VALUE,但在zOS中不可用。DB2 for zOS中是否存在CRC32或其他哈希函數?

約束:無權訪問UDF或存儲過程。

這是一個計算CRC32的快速和髒代碼片段,它只能用於大約100個字符。

WITH crc(t,c,j) AS (
    SELECT 'Hello World!',4294967295,0 FROM SYSIBM.SYSDUMMY1 
    UNION ALL 
    SELECT SUBSTR(t,2),bitxor(c,ASCII(t)),8 FROM crc WHERE t>'' AND j=0 
    UNION ALL 
    SELECT t,BITXOR(c/2,BITAND(3988292384,-BITAND(c,1))),j-1 FROM crc WHERE j>0 
) 
SELECT RIGHT(HEX(BITNOT(c)),8) FROM CRC WHERE t='' AND j=0 

結果對http://www.lammertbies.nl/comm/info/crc-calculation.html檢查:

1 
-------- 
1C291CA3 

來源:http://www.hackersdelight.org/hdcodetxt/crc.c.txt

+0

這些約束條件放在您身上,真是令人遺憾。金屬C或組裝者UDF在這裏可以創造奇蹟,開銷很低。 CBT磁帶(z/OS免費軟件)網站上提供了一個基本的CRC32程序,請參閱文件#493。 DB2 z/OS'的目標是使z/OS和LUW兼容,因此打開一個增強請求。 – zarchasmpgmr

回答