Noah Asked: 2019-02-18 23:35:55 +0800 CST2019-02-18 23:35:55 +0800 CST 2019-02-18 23:35:55 +0800 CST Oracle中有没有像校验和这样的功能 772 我需要计算一些列的校验和。内置函数checksum用于计算 Microsoft SQL Server 中的校验和。 Oracle中是否有任何内置函数校验和? oracle checksum 1 个回答 Voted Best Answer Vérace 2019-02-18T23:59:30+08:002019-02-18T23:59:30+08:00 您可以使用 Oracle 的 STANDARD_HASH 函数。 Oracle 的 STANDARD_HASH 函数“计算给定表达式的哈希值”(请参阅此处的文档)。在 UPDATE 的 WHERE 子句中使用校验和(在 MERGE 语句中)。 你可能会做这样的事情: -- 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 ; MY_HASH_1 0x2558A34D4D20964CA1D272AB26CCCE9511D880579593CD4C9E01AB91ED00F325 和 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。如果安全性不是主要问题,您可能想改用它吗?有关更多信息,请参见此处的小提琴。 请参阅此处以获取出色的问题,并在此处(相同的线程)获取出色的答案,我(无耻地!)都举起这两个答案来回答这个问题。我觉得线程和答案都足够好,值得在 dba.stackexchange 上占有一席之地!
您可以使用 Oracle 的 STANDARD_HASH 函数。
你可能会做这样的事情:
然后计算一个 SHA256 校验和:
和
MY_HASH_2 0xCC2E018AA6EB9612CCD027BBDCDC9B8C8D351789F14CAE4D688A876C18938235
这将告诉您您的记录是相同还是不同(嗯,很有可能!:-))。
使用 STANDARD_HASH,您可以选择散列算法。您可能需要谨慎选择 - MD5 的处理器密集程度远低于 SHA256。如果安全性不是主要问题,您可能想改用它吗?有关更多信息,请参见此处的小提琴。
请参阅此处以获取出色的问题,并在此处(相同的线程)获取出色的答案,我(无耻地!)都举起这两个答案来回答这个问题。我觉得线程和答案都足够好,值得在 dba.stackexchange 上占有一席之地!