我正在寻找一个DB2函数来计算大CLOB值的哈希值,以便快速跟踪更改。其他引擎具有CHECKSUM
,CRC32
或MD5
等功能。 LUW中的函数是GET_HASH_VALUE
,但在zOS中不可用。
约束:无法访问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
答案 0 :(得分:0)
答案取决于您拥有的DB2版本。如果您使用的是DB2 9.7或更高版本,请查看此处:https://www.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.sql.rtn.doc/doc/r0055167.html