gpt4 book ai didi

sql-server - 从 SQL Server 和 Oracle 获取哈希值并比较它们?

转载 作者:行者123 更新时间:2023-12-02 22:13:30 25 4
gpt4 key购买 nike

是否可以从两个数据库服务器生成哈希码并比较它们?如何在SQL Server中编写以下伪SQL?特别是在 SQL Server 和 Oracle 中接受多个数字/浮点列的两个 getHash 函数。

select s.PK
from sqltable s
join openquery(oracleLinkedServer,
'select PK, getHash(Column1, floatColumn2, ..., floatColumnN) oracleHash
from oracleTable') o on o.PK = s.PK
where
getHash(Column1, floatColumn2, ..., floatColumnN) <> oracleHash

最佳答案

在 SQL Server 中:

select upper(substring(sys.fn_sqlvarbasetostr(hashbytes('MD5','A')),3,32));

结果:

7FC56270E7A70FA81A5935B72EACBE29

在甲骨文中:

select rawtohex(
DBMS_CRYPTO.Hash (
UTL_I18N.STRING_TO_RAW ('A', 'AL32UTF8'),
2)
) from dual;

结果:

7FC56270E7A70FA81A5935B72EACBE29

确保您的字符串完全相同(区分大小写)。这里我使用 'A' 作为一个简单的例子,但它实际上可以是任何字符串。

如果通过转换为大字符串来避免数据类型差异,则应该能够在不同平台上生成相同的 md5 哈希值。请注意,SQL Server 在散列前面添加了一个“0x”来表示十六进制表示形式,我用子字符串将其剥离。

关于sql-server - 从 SQL Server 和 Oracle 获取哈希值并比较它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8810471/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com