DB2 for zOS中是否存在CRC32或其他哈希函数?

时间:2016-06-14 14:44:52

标签: hash db2 crc32 zos

我正在寻找一个DB2函数来计算大CLOB值的哈希值,以便快速跟踪更改。其他引擎具有CHECKSUMCRC32MD5等功能。 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

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

1 个答案:

答案 0 :(得分:0)

答案取决于您拥有的DB​​2版本。如果您使用的是DB2 9.7或更高版本,请查看此处:https://www.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.sql.rtn.doc/doc/r0055167.html