sql - 将整数转换为十六进制并将十六进制转换为整数

标签 sql sql-server integer hex

因此,我可以在 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/

相关文章:

mysql - 计算表中存在的外键,无论其外观如何

sql - 如何从 SQL Server 发送电子邮件?

ruby - Ruby 中的安全整数解析

java - 将选择查询中的多个值插入到java中的一个JTable列中

sql - 如何跨多行查询匹配值?

asp.net - ASP.net 4.0 session ID 的最大长度是多少 - 存储为 varchar、char 或 nvarchar?

sql-server - 延迟约束检查

java - 使用 Android 时 Java 中的随机数

java - Java中如何保证用户输入始终为Integer

php - 使用 yii2 迁移从列中删除 UNIQUE