1

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

我的功能是:

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;

当我运行它时,它会返回许多带有重复哈希键值的行。但是当我去数据库查看那些行(顺便说一句,每个buyer_key 都是唯一的)时,我发现这些行不包含相同的值。

我是否正确调用该函数?

4

1 回答 1

3

显然不是!!

散列函数是任何算法或子程序,可将可变长度的大型数据集(称为键)映射到固定长度的较小数据集。例如,具有可变长度的人名可以散列为单个整数。散列函数返回的值称为散列值、散列码、散列和、校验和或简称为散列。

这意味着如果输入域集大小大于输出域集大小,则应该存在重复项。

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

于 2012-08-06T21:13:48.093 回答