sql – 将整数转换为十六进制,将十六进制转换为整数

所以我有这个查询工作(其中signal_data是一个列)在Sybase,但它不工作在Microsoft SQL Server:

HEXTOINT(SUBSTRING((INTTOHEX(signal_data)),5,2)) as Signal

我也有在Excel(其中A1包含的值):

=HEX2DEC(LEFT(DEC2HEX(A1),LEN(DEC2HEX(A1))-2))

有谁知道我将如何在SQL Server中这样做?

最佳答案
将INT转换为十六进制:

SELECT CONVERT(VARBINARY(8), 16777215)

将十六进制转换为INT:

SELECT CONVERT(INT, 0xFFFFFF)

http://classicasp.aspfaq.com/general/how-do-i-convert-from-hex-to-int-and-back.html

更新2015-03-16(通过Oskar Berggren)

上面的例子有一个限制,它只有当HEX值作为整数文字给出时才起作用。为了完整性,如果要转换的值是十六进制字符串(如在varchar列中找到),请使用:

-- If the '0x' marker is present:
SELECT CONVERT(INT, CONVERT(VARBINARY, '0x1FFFFF', 1))

-- If the '0x' marker is NOT present:
SELECT CONVERT(INT, CONVERT(VARBINARY, '1FFFFF', 2))

注意:字符串必须包含偶数个十六进制数字。奇数位数会产生错误。

更多细节可以在CAST and CONVERT (Transact-SQL)的“二进制样式”部分找到。我相信SQL Server 2008或更高版本是必需的。

转载注明原文:sql – 将整数转换为十六进制,将十六进制转换为整数 - 代码日志