如何将十六进制VARCHAR转换为SQL Server中的VARBINARY

时间:2010-09-22 17:35:12

标签: sql-server sql-server-2005

我在VARCHAR字段中有一个十六进制字符串,我需要将其转换为VARBINARY。

如何做到这一点?

3 个答案:

答案 0 :(得分:11)

如果是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

答案 1 :(得分:2)

试试这个xml hack:

declare @hexstring varchar(max);
set @hexstring = '612E20';
select cast('' as xml).value('xs:hexBinary(sql:variable("@hexstring"))', 'varbinary(max)')

答案 2 :(得分:1)

您可以创建this post中使用的UDF。然后做:

SELECT CAST(dbo.Hex2Bin('7FE0') as VARBINARY(8000)) AS bin;