0
我正在尋找一個DB2函數來計算大CLOB值上的散列,以便快速跟蹤更改。其他發動機的功能如CHECKSUM
,CRC32
或MD5
。 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
這些約束條件放在您身上,真是令人遺憾。金屬C或組裝者UDF在這裏可以創造奇蹟,開銷很低。 CBT磁帶(z/OS免費軟件)網站上提供了一個基本的CRC32程序,請參閱文件#493。 DB2 z/OS'的目標是使z/OS和LUW兼容,因此打開一個增強請求。 – zarchasmpgmr