1

可以在 sql server 中将 varchar(32)(十六进制字符串,如 0x81f2cf442269e111b99c1cc1deedf59c)转换为 bigint 吗?

我试过这个:

select convert(bigint, convert (varbinary(16), '0x81f2cf442269e111b99c1cc1deedf59c', 1))

但我不确定它是否适用于更高和更低的值。

4

2 回答 2

4

可以在 sql server 中将 varchar(32)(十六进制字符串,如 0x81f2cf442269e111b99c1cc1deedf59c)转换为 bigint 吗?

2个例子回答。两者都从根本上错误。

无法完成。有人关心先进行基本的数学检查吗?

32 十六进制 = 16 个字节。大容量:8 个字节。

你所有的代码都是一回事——没用。您不能将具有 16 字节数字的 32 十六进制字符串转换为 8 字节数字。仅在极少数情况下(高 8 字节全为 0)。

于 2012-03-28T09:23:24.000 回答
0

我希望您可以通过以下方式进行,请您尝试一下。

DECLARE @HexValue Varchar(32)
SET @HexValue = '0x81f2cf442269e111b99c1cc1deedf59c'

Declare @Query NVARCHAR(100)
Declare @Parameters NVARCHAR(50)
Declare @ReturnValue BIGINT

SET @Query = N'Select @Result = Convert(BIGINT,' + @HexValue + ')'
SET @Parameters = N'@Result BIGINT output'
EXEC MASTER.dbo.Sp_executesql @Query, @Parameters, @ReturnValue OUTPUT

SELECT @ReturnValue

谢谢你的时间。

于 2012-03-28T09:20:55.513 回答