0

好奇为什么 SQL Server 校验和函数会为这两个不同的输入值返回相同的值?

SELECT CHECKSUM(2792,2847), 2792+2847 » **42399**,5639

SELECT CHECKSUM(2716,3167), 2716+3167 » **42399**,5883
4

2 回答 2

0

通过查看文档CHECKSUM (Transact-SQL)文档,它表明存在重复的可能性并改用HASHBYTES (Transact-SQL)

于 2013-05-30T19:48:47.420 回答
0

我有这个问题。小数和 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

于 2017-04-25T12:17:59.530 回答