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