Oracle SQL试图在一个列中散列25列

问题描述 投票:0回答:1

因此,当我尝试使用ORA_HASH函数对25列进行哈希处理时,我得到了错误:参数太多。有什么办法可以快速对所有25列进行哈希处理,因为我们有大约6000万行,并且没有更新日期:(

select  ORA_HASH
  (id,name,c....,...) form table name 
sql oracle hash
1个回答
0
投票

[使用带有特殊字符串的连接作为分隔符,例如这里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可能不是您想要的功能。

© www.soinside.com 2019 - 2024. All rights reserved.