我正在使用 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/