如何防止Checksum()在sql server中生成重复值

时间:2011-07-28 09:10:24

标签: tsql

众所周知,校验和很有可能生成重复值,并且我希望找到一种方法来阻止校验和生成重复值...... 请帮忙

非常感谢

2 个答案:

答案 0 :(得分:2)

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

MSDN for CHECKSUM表示使用HASHBYTES而不是重复的可能性更小。

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

答案 1 :(得分:0)

考虑使用HashBytes

来自MSDN

  

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

示例:

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