Конвертировать varchar (32) в bigint - PullRequest
1 голос
/ 28 марта 2012

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

Я пробовал это:

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

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

Ответы [ 2 ]

4 голосов
/ 28 марта 2012

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

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

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

32 hex = 16 байтов.Biging: 8 байтов.

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

0 голосов
/ 28 марта 2012

Я надеюсь, что вы можете пойти по нижеуказанным путям, пожалуйста, попробуйте это.

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

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

...