在ResultSet中计算Oracle,SQLServer和C#中的相同校验和

时间:2016-03-21 07:59:50

标签: c# .net sql-server oracle

我需要计算Oracle,SQL Server和C#中结果集的校验和,因为我想检查它们是否完全相同。

示例数据:

CREATE TABLE [dbo].[TestTable](
    [ParentArticleNumber] [nvarchar](50) NOT NULL,
    [ArticleNumber] [nvarchar](50) NOT NULL,
    [Amount] [decimal](18, 4) NOT NULL
)
GO
Insert Into TestTable (
    ParentArticleNumber
    , ArticleNumber
    , Amount) 
values 
    ('Art1', 'Art3', 10.5)
    , ('Art1', 'Art2', 20)
    , ('Art4', 'Art2', 22.35)
Go

在C#中,字段的类型为stringdecimal

示例查询:

Select 
    ArticleNumber
    , Amount
From
    TestTable
Where
    ParentArticleNumber = 'Art1'

如何计算一种在每个系统上得到相同结果的校验和的想法?

1 个答案:

答案 0 :(得分:1)

使用公共哈希函数,例如MD5。

注意:这假设您要执行非常简单的校验和,如果您正在执行与安全性相关的哈希,则还有一些其他注意事项。具体来说:如果此输入来自不受信任的用户且他们不应该触发哈希冲突,请使用比MD5更安全的算法。

我不会发布示例,因为这基本上只是搜索MD5 +你想要做哈希的平台。

SQL:HashBytes

Generate MD5 hash string with T-SQL

C#:System.Security.Cryptography.MD5.Create().ComputeHash

calculate a MD5 hash from a string

甲骨文:     DBMS_CRYPTO

How to call Oracle MD5 hash function?