将varchar(32)转换为bigint

时间:2012-03-28 09:07:19

标签: sql-server hex type-conversion bigint

可以将varchar(32)(像0x81f2cf442269e111b99c1cc1deedf59c这样的十六进制字符串)转换为sql server中的bigint吗?

我试过这个:

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

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

2 个答案:

答案 0 :(得分:4)

  

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

2个答案与示例。两种根本错误。

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

32十六进制= 16字节。 重做:8个字节。

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

答案 1 :(得分: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

感谢您的时间。