因此,当我尝试使用ORA_HASH函数对25列进行哈希处理时,我得到了错误:参数太多。有什么办法可以快速对所有25列进行哈希处理,因为我们有大约6000万行,并且没有更新日期:(
select ORA_HASH
(id,name,c....,...) form table name
[使用带有特殊字符串的连接作为分隔符,例如这里chr(10)假定此章程未出现在您的数据中
col1||chr(10)||col1||....
小心使用数字和数据列。
或者在字符列中明确转换它们,例如
...||to_char(col_date,'yyyy-mm-dd hh24:mi:ss')||...
或临时覆盖会话设置以使其具有恒定值
ALTER SESSION SET NLS_NUMERIC_CHARACTERS = ',.']';
ALTER SESSION SET NLS_DATE_FORMAT = 'DD.MM.YYYY HH24:MI:SS';
NLS设置的问题是,当它们更改并且您将默认转换为字符串时,会得到不同的哈希码。
也请注意,ORA_HASH可能导致重复,请考虑例如MD5
哈希码可识别表数据中的更改。
最后注释Oracle具有(未知)功能DBMS_SQLHASH.GETHASH可能不是您想要的功能。