好奇为什么 SQL Server 校验和函数会为这两个不同的输入值返回相同的值?
SELECT CHECKSUM(2792,2847), 2792+2847 » **42399**,5639
SELECT CHECKSUM(2716,3167), 2716+3167 » **42399**,5883
好奇为什么 SQL Server 校验和函数会为这两个不同的输入值返回相同的值?
SELECT CHECKSUM(2792,2847), 2792+2847 » **42399**,5639
SELECT CHECKSUM(2716,3167), 2716+3167 » **42399**,5883
通过查看文档CHECKSUM (Transact-SQL)文档,它表明存在重复的可能性并改用HASHBYTES (Transact-SQL)
我有这个问题。小数和 CheckSum() 似乎有问题。通过将我的 checksum() 中使用的所有列转换为 varchar 来解决它
例如,代替: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