2012-03-28 4 views
1

Можно преобразовать varchar (32) (шестнадцатеричную строку, такую ​​как 0x81f2cf442269e111b99c1cc1deedf59c) в bigint в sql-сервере?Преобразование varchar (32) в bigint

Я попытался это:

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

, но я не уверен, что он работает с более высокими и более низкими значениями.

+0

Почему вам нужно что-то в этом роде? –

+0

, чтобы сохранить эту строку в столбце bigint – malinois

+0

Я думаю, что эти сообщения могут вам помочь http://blog.sqlauthority.com/2010/02/01/sql-server-question-how-to-convert-hex-to-decimal/и http://dpatrickcaldwell.blogspot.com/2009/05/converting-hexadecimal-or-binary-to.html –

ответ

4

можно преобразовать VARCHAR (32) (шестнадцатеричную строку, как 0x81f2cf442269e111b99c1cc1deedf59c) на BIGINT в SQL Server?

2 ответы с примерами. ОБА в корне неправильно.

НЕ МОЖЕТ СДЕЛАТЬ. Кто-нибудь заботится о проведении базовой математической проверки?

32 hex = 16 bytes. Biging: 8 bytes.

Весь ваш код - это одно - бесполезно. Вы НЕ МОЖЕТЕ преобразовать 32-х шестую строку с номерами в 16 байт в 8-байтовое число. Только в очень немногих случаях (верхние 8 байтов всего 0).

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 

Спасибо за ваше время.

Смежные вопросы