因此,我可以在 Sybase 中使用此查询(其中 signal_data
是一列),但它在 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)
更新2015-03-16
上面的示例有一个限制,即它仅在十六进制值作为整数字面量给出时才有效。为了完整起见,如果要转换的值是十六进制字符串(例如在 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 - 将整数转换为十六进制并将十六进制转换为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/703019/