Как преобразовать шестнадцатеричный VARCHAR в VARBINARY в SQL Server - PullRequest
3 голосов
/ 22 сентября 2010

У меня есть шестнадцатеричная строка в поле VARCHAR, и мне нужно преобразовать ее в VARBINARY.

Как это сделать?

Ответы [ 3 ]

11 голосов
/ 22 сентября 2010

Если SQL Server 2008, вы можете сделать это прямо через CONVERT

declare @hexstring varchar(max);
set @hexstring = 'abcedf012439';


/*SQL Server 2005 Specific*/
select cast('' as xml).value('xs:hexBinary( substring(sql:variable("@hexstring"), sql:column("t.pos")) )', 'varbinary(max)')

from (select case substring(@hexstring, 1, 2) when '0x' then 3 else 0 end) as t(pos)


/*SQL Server 2008 Specific*/
set @hexstring = 'abcedf012439';
select CONVERT(varbinary(max), @hexstring, 2);

set @hexstring = '0xabcedf012439';
select CONVERT(varbinary(max), @hexstring, 1);

Источник: http://blogs.msdn.com/b/sqltips/archive/2008/07/02/converting-from-hex-string-to-varbinary-and-vice-versa.aspx

2 голосов
/ 22 сентября 2010

Попробуйте этот хак xml:

declare @hexstring varchar(max);
set @hexstring = '612E20';
select cast('' as xml).value('xs:hexBinary(sql:variable("@hexstring"))', 'varbinary(max)')
1 голос
/ 22 сентября 2010

Вы можете создать UDF, используемый в этой записи . А затем сделайте:

SELECT CAST(dbo.Hex2Bin('7FE0') as VARBINARY(8000)) AS bin;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...