如何在 SQL Server 2005 中将十六进制字符串转换为二进制?

3

如何将 SQL Server 中的十六进制字符串转换为二进制?

更好的方法是如何将 SQL Server 中的十六进制字符串转换为整数?

问题在于 Stackoverflow 上的所有现有答案都假定使用 SQL Server 2008。

失败的尝试

编辑

......是的,2005年有varbinary。即使2000年也有varbinary:

SELECT name, xtype FROM systypes WHERE name LIKE '%binary%'; 
SELECT @@version;

name       xtype
---------  -----
varbinary  165
binary     173

(No column name)
---------------------------------
Microsoft SQL Server  2000 - 8.00.2039 (Intel X86) 
May  3 2005 23:18:38 
Copyright (c) 1988-2003 Microsoft Corporation
Standard Edition on Windows NT 5.0 (Build 2195: Service Pack 4)

即使是 SQL Server 6.5 也有 varbinary。 *(存档)*有趣的是,典型的 Stack Overflow 风格是试图绕过问题而不是回答它。


2
2005年的SQL中是否有varbinary数据类型? - Xedni
2个回答

1

适用于可以表示为bigint的值

DECLARE @Hex VARCHAR(10)='0x3078'
DECLARE @DecValue BIGINT=0
DECLARE @Power TINYINT = 0

SET @Hex=REVERSE(REPLACE(@Hex,'0x',''))
WHILE LEN(@Hex)>0
BEGIN
    SET @DecValue=@DecValue+(POWER(16,@Power)*CONVERT(TINYINT,LEFT(@Hex,1)))
    SET @Power=@Power+1
    SET @Hex=RIGHT(@Hex,LEN(@Hex)-1)
END

SELECT @DecValue AS [Decimal value]

1
SQL Server 2005有一个函数master.sys.fn_varbintohexstr()(显然在SQL Server 2000中它被称为dbo.fn_varbintohexstr)用于将二进制转换为字符串。
搜索此函数名称会出现将十六进制字符串转换为二进制的答案,例如这个SO答案,或Social MSDN(有用的代码,但有很多无效链接),或使用XQuery解析十六进制字符串的这个MSDN博客

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接