Tim Asked: 2023-03-24 19:44:29 +0800 CST2023-03-24 19:44:29 +0800 CST 2023-03-24 19:44:29 +0800 CST 在 SQL Server T-SQL 中将十六进制字符串表示形式转换为十六进制数 772 我得到了一个数据集,其中十六进制数字已存储为旨在对人友好的准十六进制字符串表示形式,例如“16A1”。T-SQL 中是否有转换函数可以将字符串“16A1”或其修改版本转换为十六进制数0x000016A1? sql-server 2 个回答 Voted Best Answer J.D. 2023-03-24T20:48:29+08:002023-03-24T20:48:29+08:00 我不知道专门执行此操作的功能,但通过以下操作很容易完成: SELECT '0x' + RIGHT('00000000' + '16A1', 8) AS SomeHexString 示例 dbfiddle.uk 与其他建议一样,您也可以将BINARY数据类型的值转换为十六进制,如下所示: SELECT CONVERT ( BINARY(4), RIGHT ( CONCAT('00000000', '16A1'), 8 ), 2 ) AS SomeHexField 这应该考虑到准十六进制字符串中的不同长度值。 示例 dbfiddle.uk 如果输入的十六进制字符串可以为 null,请确保使用 取消它的 null ISNULL(),或者将函数内的运算符COALESCE()切换为函数(如我的第二个选项)。+RIGHT()CONCAT() Charlieface 2023-03-25T00:20:57+08:002023-03-25T00:20:57+08:00 您可以将其转换为binary(2)样式 2,然后将其与0x0000(二进制值,而不是字符串)连接 SELECT 0x0000 + CONVERT(binary(2), '16A1', 2); 数据库<>小提琴
我不知道专门执行此操作的功能,但通过以下操作很容易完成:
示例 dbfiddle.uk
与其他建议一样,您也可以将
BINARY
数据类型的值转换为十六进制,如下所示:这应该考虑到准十六进制字符串中的不同长度值。
示例 dbfiddle.uk
如果输入的十六进制字符串可以为 null,请确保使用 取消它的 null
ISNULL()
,或者将函数内的运算符COALESCE()
切换为函数(如我的第二个选项)。+
RIGHT()
CONCAT()
您可以将其转换为
binary(2)
样式 2,然后将其与0x0000
(二进制值,而不是字符串)连接数据库<>小提琴