尝试使用TSQL将十六进制转换为大整数:
根据在线计算器here(十六进制到十进制),
800C28FCA386C7A227600B2FE50B7CAE11EC86D3BF1FBE471BE89827E19D72AA1D507A5B8D
必须给出结果:
63680997318088143281752740767766707563546963464218564507450892460763521488675430192536461
在SQL中我尝试:
SELECT CONVERT(BIGINT, CONVERT(VARBINARY, '800C28FCA386C7A227600B2FE50B7CAE11EC86D3BF1FBE471BE89827E19D72AA1D507A5B8D', 2))
给了我
-4735785797357674083
有谁知道如何在TSQL中执行此操作?
答案 0 :(得分:3)
根据Microsoft的说法,bigint
类型不能提供足够的精度来支持如此大小的值:
Data type Range Storage
--------- --------------- -------
bigint -2^63 to 2^63-1 8 Bytes
这意味着您可以成功从VARBINARY
转换为BIGINT
的最高数字是9,223,372,036,854,775,807。
TSQL缺少可能代表无界整数的数字类型。您应该将VARBINARY
作为字节序列读入程序,并使用“宿主语言”(C,C ++,C#,Java等)的工具将该字节序列转换为大数字。