ORACLE MD5 函数具有相同输入的不同输出

Different Output with same Input for ORACLE MD5 Function

在给定时间我存储了以下 ORACLE SQL 查询的结果:

SELET col , TO_CHAR( LOWER( STANDARD_HASH( col , 'MD5' ) ) AS hash_col FROM MyTable ;

一周后,我对相同的数据执行了相同的查询(col 列的值相同)。

我认为生成的 hash_col 列的值与前一次执行的值相同,但事实并非如此。

ORACLE STANDARD_HASH 函数是否有可能随着时间的推移为相同的输入数据提供相同的结果? 如果该函数在同一天被调用两次,它就会执行。

关于数据更改(或不更改)和散列更改(或不更改)的所有信息都是您的断言。

您可以创建并填充日志 table:

create table hash_log (
   sample_time timestamp,
   hashed_string varchar2(200),
   hashed_string_dump varchar2(200),
   hash_value varchar2(200)
   );

然后每天:

insert into hash_log values 
  (select systimestamp,
          source_column,
          dump(source_column),
          STANDARD_HASH(source_column , 'MD5' )
   from source_table
   );

然后,发现变化:

select distinct      hashed_string ||
                     hashed_string_dump ||
                     hash_value 
from hash_log;