因此,我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中执行此操作?
3 回答
牧羊人nacy
TA贡献1862条经验 获得超7个赞
将INT转换为十六进制:
SELECT CONVERT(VARBINARY(8), 16777215)
将十六进制转换为INT:
SELECT CONVERT(INT, 0xFFFFFF)
更新2015-03-16
上面的示例有一个局限性,即仅在将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和CONVERT(Transact-SQL)的“二进制样式”部分中找到更多详细信息。我认为需要SQL Server 2008或更高版本。
小怪兽爱吃肉
TA贡献1852条经验 获得超1个赞
实际上,内置函数名为master.dbo.fn_varbintohexstr。
因此,例如:
SELECT 100, master.dbo.fn_varbintohexstr(100)
给你
添加回答
举报
0/150
提交
取消