2012-03-28 7 views
1

Es ist möglich, ein varchar (32) (eine hexadezimale Zeichenfolge wie 0x81f2cf442269e111b99c1cc1deedf59c) zu einem bigint in SQL Server zu konvertieren?Convert varchar (32) in bigint

Ich habe dies versucht:

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

aber ich bin nicht sicher, dass es mit höheren und niedrigeren Werten arbeitet.

+0

Warum brauchen Sie so etwas? –

+0

zum Speichern dieser Zeichenfolge in einer Bigint-Spalte – malinois

+0

Ich denke, diese Beiträge können Ihnen helfen http://blog.sqlauthority.com/2010/02/01/sql-server-question-how-to-convert-hex-to-decimal/und http://dpatrickcaldwell.blogspot.com/2009/05/converting-hexadecimal-or-binary-to.html –

Antwort

4

Es ist möglich, eine varchar (32) (eine hexadezimale Zeichenfolge wie 0x81f2cf442269e111b99c1cc1deedf59c) zu einem Bigint in SQL Server zu konvertieren?

2 Antworten mit Beispielen. BEIDE grundsätzlich falsch.

KANN NICHT ERFOLGT WERDEN. Wer kümmert sich zuerst um einen einfachen Mathe-Check?

32 hex = 16 Bytes. Biging: 8 Bytes.

Ihr gesamter Code ist eine Sache - nutzlos. Sie können eine 32-hexadezimale Zeichenfolge mit Zahlen von 16 Byte nicht in eine 8-Byte-Zahl konvertieren. Nur in sehr wenigen Fällen (obere 8 Bytes alle 0).

0

Ich hoffe, Sie können mit unten Wege gehen, würden Sie bitte dies versuchen.

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 

Vielen Dank für Ihre Zeit.