sql - 计算出的校验和值中的负号表示什么?

标签 sql sql-server sql-server-2008

我正在使用 MS SQL 中的 CHECKSUM() 函数计算哈希值。为什么计算出来的值有的带正号,有的带负号?

SELECT CommodityName, CHECKSUM(CommodityName) FROM Table1

结果:

CommodityName        Checksum
BuildingSupplies    -1674787472
Cutting Tools        1343439447
Electrical           1703618888
Filtration          -1653028371
PPE                 -2086698034
Spare Parts          1752220254
Welding             -178487827

最佳答案

这是对这个老问题的间接答案,但如果有人来到这里寻找一种获取始终为正数的方法(例如,保存十六进制表示形式),请尝试将 2,147,483,648 添加到结果中,获取介于0 和 4,294,967,295。

需要转换为 bigint:

DECLARE @k bigint = CAST(CHECKSUM(…) As bigint) + 2147483648;

关于sql - 计算出的校验和值中的负号表示什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45718422/

相关文章:

sql - 将数据从一个表复制到另一个表时,使用参数还是列值更好?

php - 通过mysql获取时间间隔的数据

sql - Ingres 中的 DATE_ADD 功能

sql - 基于多对多关系匹配相似实体

xml - SQL Server FOR XML 封闭元素?

c# - Lucene.Net 创建空索引

sql - 解释 postgres 的 EXPLAIN 输出

c# - 我的服务器因存储过程中的异常而挂起。超时已过

c# - 如何使用自动增量列将集合保存为用户定义的数据类型?

sql - 如何将数字转换为以逗号分隔的数字格式字符串?