Oracle dbms_utilities.get_hash_value是否始终为不同的输入返回唯一值?

时间:2012-08-06 20:56:15

标签: oracle hash

我认为答案不是基于我所做的实验。但是我不确定我是否正确地做事。

我的功能是:

select buyer_key, DBMS_UTILITY.get_hash_value(buyer_key||'|'||buyer_entity_id||'|'||buyer_io_id||'|'||buyer_line_item_id||'|'||is_billing_enabled||'|'||currency_id_b_trgt||'|'||currency_id_b_prfrd||'|'||ymdh_max,1,POWER(2,16)-1) as hashvalue from network_buyer_dim order by hashvalue asc;

当我运行它时会返回多个具有重复hashkey值的行。但是当我进入数据库并查看这些行时(BTW,每个buyer_key都是唯一的),我看到行不包含相同的值。

我是否正确调用了该功能?

1 个答案:

答案 0 :(得分:3)

显然不是!!

  

hash function是映射大的任何算法或子程序   可变长度的数据集,称为密钥,到a的较小数据集   固定长度。例如,一个人的名字,长度可变,   可以被散列为一个整数。哈希返回的值   函数被称为哈希值,哈希码,哈希值,校验和或   只是哈希。

这意味着如果输入域集的大小大于输出域集的大小,则表示重复。

除此之外,最佳散列函数被认为是那些倾向于为所有可能的输入值提供相同数量的重复输出值的散列函数。