很奇怪为什么SQL Server校验和函数为这两个不同的输入值返回相同的值?
SELECT CHECKSUM(2792,2847), 2792+2847 » **42399**,5639
SELECT CHECKSUM(2716,3167), 2716+3167 » **42399**,5883
答案 0 :(得分:0)
通过查看文档CHECKSUM (Transact-SQL)文档,它表明存在重复的可能性并使用HASHBYTES (Transact-SQL)代替
答案 1 :(得分:0)
我有这个问题。小数和CheckSum()似乎有问题。 通过将我的校验和()中使用的所有列转换为varchar
来解决它 E.g。
而不是:select checksum(columnA) from dbo.Table
使用:select checksum(cast(columnA as varchar)) from dbo.Table
SELECT CHECKSUM(CAST(2792 AS VARCHAR), CAST(2847 AS VARCHAR)), 2792+2847
>> -1228994846,5639
SELECT CHECKSUM(CAST(2716 AS VARCHAR), CAST(3167 AS VARCHAR)), 2716+3167
>> 1320541154,5883