ca9*_*3d9 5 sql-server oracle hash
是否可以从两个数据库服务器生成哈希代码并进行比较?如何在SQL Server中编写以下伪SQL?特别是getHash在SQL server和oracle中接受mutliple numeric/float列的两个函数.
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
Run Code Online (Sandbox Code Playgroud)
tbo*_*one 10
在SQL Server中:
select upper(substring(sys.fn_sqlvarbasetostr(hashbytes('MD5','A')),3,32));
Run Code Online (Sandbox Code Playgroud)
结果:
7FC56270E7A70FA81A5935B72EACBE29
Run Code Online (Sandbox Code Playgroud)
在Oracle中:
select rawtohex(
DBMS_CRYPTO.Hash (
UTL_I18N.STRING_TO_RAW ('A', 'AL32UTF8'),
2)
) from dual;
Run Code Online (Sandbox Code Playgroud)
结果:
7FC56270E7A70FA81A5935B72EACBE29
Run Code Online (Sandbox Code Playgroud)
确保您的字符串完全相同(区分大小写).在这里我使用'A'作为一个简单的例子,但它可能是任何字符串.
如果通过转换为大字符串来避免数据类型差异,则应该能够在不同平台上生成相同的md5哈希.请注意,SQL Server在哈希前面添加了一个'0x'来表示十六进制表示,我用子字符串去掉了它.
| 归档时间: |
|
| 查看次数: |
8769 次 |
| 最近记录: |