如何将 SQL Server 中的十六进制字符串转换为二进制?
更好的方法是如何将 SQL Server 中的十六进制字符串转换为整数?
问题在于 Stackoverflow 上的所有现有答案都假定使用 SQL Server 2008。
失败的尝试
Convert hex string to binary SQL Server
SELECT CONVERT(binary(16),'0x01',1) 0x30783031000000000000000000000000
SQL Server hex string to varbinary conversion
select CONVERT(varbinary(max), '0x01', 1); 0x30783031 select CONVERT(varbinary(max), '01', 2); 0x3031
Convert integer to hex and hex to integer
-- If the '0x' marker is present: SELECT CONVERT(INT, CONVERT(VARBINARY, '0x000001', 1)) 808464433 -- If the '0x' marker is NOT present: SELECT CONVERT(INT, CONVERT(VARBINARY, '000001', 2)) 808464433
编辑
......是的,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 风格是试图绕过问题而不是回答它。