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;
在给定时间我存储了以下 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;