标签: tsql
众所周知,校验和很有可能生成重复值,并且我希望找到一种方法来阻止校验和生成重复值...... 请帮忙
非常感谢
答案 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