首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Oracle中有类似校验和的函数吗?

在Oracle中有类似校验和的函数吗?
EN

Database Administration用户
提问于 2019-02-18 07:35:55
回答 1查看 8.5K关注 0票数 2

我需要计算一些列的校验和。内置函数校验和用于计算中的校验和。

Oracle中有内置函数校验和吗?

EN

回答 1

Database Administration用户

回答已采纳

发布于 2019-02-18 07:59:30

您可以使用甲骨文的STANDARD_HASH函数。

Oracle的STANDARD_HASH函数“计算给定表达式的哈希值”(请参阅文档这里)。在UPDATE的WHERE子句中使用校验和(在合并语句中)。

你可能会这样做:

代码语言:javascript
运行
复制
-- 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校验和:

代码语言:javascript
运行
复制
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 ;
  • MY_HASH_1 0x2558A34D4D20964CA1D272AB26CCCE9511D880579593CD4C9E01AB91ED00F325

代码语言:javascript
运行
复制
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 ;
  • MY_HASH_2 0xCC2E018AA6EB9612CCD027BBDCDC9B8C8D351789F14CAE4D688A876C18938235

这将告诉您您的记录是相同的还是不同的(嗯,非常高的可能性!:-)。

使用STANDARD_HASH,您可以选择您的散列算法。您可能需要谨慎选择-- MD5比SHA256少得多的处理器密集性。如果安全性不是一个主要问题,那么您可能想使用它吗?有关更多信息,请参见fidddle 这里

最好的问题请参见这里这里 (相同的线程)为出色的答案,这两者都是我(无耻!)回答这个问题。我觉得线程和答案都足够好,值得在dba.stackexchange上占有一席之地!

票数 4
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/230020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档