我需要计算一些列的校验和。内置函数校验和用于计算中的校验和。
Oracle中有内置函数校验和吗?
发布于 2019-02-18 07:59:30
您可以使用甲骨文的STANDARD_HASH函数。
Oracle的STANDARD_HASH函数“计算给定表达式的哈希值”(请参阅文档这里)。在UPDATE的WHERE子句中使用校验和(在合并语句中)。
你可能会这样做:
-- 2 tables
create table table1 as
select 1 id, 1 a1, 1 b1, 1 c1, 1 d1, 1 e1, 1 f1 from dual;
create table table2 as
select 2 id, 2 a2, 2 b2, 2 c2, 2 d2, 2 e2, 2 f2 from dual;
然后计算一个SHA256校验和:
SELECT
STANDARD_HASH ( T.id || T.a1 || T.b1 || T.c1 || T.d1 || T.e1 || T.f1, 'SHA256' )
AS my_hash_1
FROM table1 T ;
和
SELECT
STANDARD_HASH ( T.id || T.a2 || T.b2 || T.c2 || T.d2 || T.e2 || T.f2, 'SHA256' )
AS my_hash_2
FROM table2 T ;
这将告诉您您的记录是相同的还是不同的(嗯,非常高的可能性!:-)。
使用STANDARD_HASH,您可以选择您的散列算法。您可能需要谨慎选择-- MD5比SHA256少得多的处理器密集性。如果安全性不是一个主要问题,那么您可能想使用它吗?有关更多信息,请参见fidddle 这里。
最好的问题请参见这里,这里 (相同的线程)为出色的答案,这两者都是我(无耻!)回答这个问题。我觉得线程和答案都足够好,值得在dba.stackexchange上占有一席之地!
https://dba.stackexchange.com/questions/230020
复制相似问题