1

SQL Server で varchar(32) (0x81f2cf442269e111b99c1cc1deedf59c のような 16 進文字列) を bigint に変換できますか?

私はこれを試しました:

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

しかし、それがより高い値とより低い値で機能するかどうかはわかりません。

4

2 に答える 2

4

SQL Server で varchar(32) (0x81f2cf442269e111b99c1cc1deedf59c のような 16 進文字列) を bigint に変換できますか?

例付きの2つの回答。どちらも根本的に間違っています。

できません。最初に基本的な数学チェックを実行することを気にする人はいますか?

32 hex = 16 バイト。ビギング: 8 バイト。

すべてのコードは 1 つのものであり、役に立たないものです。16 バイトの数値を含む 32 の 16 進文字列を 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 に答える