在 SQL 服务器中将十进制转换为不带 0x 的十六进制字符串

Convert decimal to hex string without 0x in SQL Server

我要转换

string
------
BB
C1
GB

hex
---
4242
4331
4742

使用

SELECT CONVERT(BINARY(2), 'B1')

结果是'0x4231'

但我想从结果中删除 0x,所以我尝试 varbinary 到字符串:

SELECT CONVERT([VARCHAR](MAX), CONVERT(BINARY(2), 'B1', 2))

结果是'?'

然后我试了

SELECT SUBSTRING(CONVERT(BINARY(2), 'B1'), 2, 4)

结果是'0x42'

如何将 'B1' 转换为 '4231'?

使用系统函数master.dbo.fn_varbintohexstr转换为十六进制,然后删除前两个字符。

SELECT SUBSTRING(master.dbo.fn_varbintohexstr(convert(binary(2), 'B1')),3,999)

输出:

4231

自己解决了

SELECT convert(varchar(4), convert(binary(2), ('B1')), 2)