【问题标题】:How to Prevent Checksum() from generating Duplicate Values in sql server如何防止 Checksum() 在 sql server 中生成重复值
【发布时间】:2011-07-28 09:10:23
【问题描述】:

众所周知,checksum 可能会生成重复值,我应该找到一种方法来防止checksum 生成重复值... 请帮忙

谢谢你的问候

【问题讨论】:

  • 你不能也不需要这样做。如果您想要一个唯一的标识,那么有限大小的值(校验和)不是可行的方法。

标签: tsql


【解决方案1】:

你不能。 CHECKSUM 永远不能保证唯一。

MSDN for CHECKSUM 表示改用HASHBYTES,这样重复的可能性要小得多。

但是,任何散列函数不能保证 100% 没有重复。如果你想要“没有重复”,那么你不应该散列......

【讨论】:

    【解决方案2】:

    考虑使用HashBytes

    来自MSDN

    当一个 MD5 哈希算法是 指定,HashBytes 返回相同结果的概率 两个不同的输入远低于CHECKSUM。

    例子:

    DECLARE @HashThis nvarchar(4000);
    SELECT @HashThis = CONVERT(nvarchar(4000),'dslfdkjLK85kldhnv$n000#knf');
    SELECT HashBytes('SHA1', @HashThis);
    GO
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-13
      • 2014-12-05
      • 1970-01-01
      • 2014-07-20
      • 2012-01-06
      相关资源
      最近更新 更多