将整数转换为十六进制,并将十六进制转换为整数

因此,我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中执行此操作?


慕后森
浏览 759回答 3
3回答

牧羊人nacy

将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或更高版本。

小怪兽爱吃肉

实际上,内置函数名为master.dbo.fn_varbintohexstr。因此,例如:SELECT 100, master.dbo.fn_varbintohexstr(100)给你
打开App,查看更多内容
随时随地看视频慕课网APP