一尘不染

SQL:将整数转换为十六进制字符串?

sql

如何将整数转换为十六进制字符串?我想将int转换为可以用作页面颜色的格式,例如’#ff0000’。

因此,例如:

--This converts my int to hex:
CONVERT(VARBINARY(8), Color) Color,

我想做这样的事情:

'#' + CONVERT(NVARCHAR(10), CONVERT(VARBINARY(8), Color)) Color

但是转换varbinary字符串只是将其转换为ascii字符,而不是返回实际的十六进制字符串


阅读 141

收藏
2021-05-23

共1个答案

一尘不染

有一个内置函数可以从二进制值生成十六进制 字符串

SELECT
    '#' + sys.fn_varbintohexstr(CONVERT(BINARY(3), 0)),
    '#' + sys.fn_varbintohexstr(CONVERT(BINARY(3), 255))

您需要binary(3)确保输出字符串的正确长度。
这是错误的。您会得到4个十六进制数字,因为这里的0和255是4个字节的int

SELECT
    '#' + sys.fn_varbintohexstr(CONVERT(varBINARY(8), 0)),
    '#' + sys.fn_varbintohexstr(CONVERT(varBINARY(8), 255))

2017年10月更新:

转换现在已内置到SQL Server中(自2008年起!),因此我们可以简单地使用CONVERT

SELECT '#' + CONVERT(char(6), CONVERT(BINARY(3), 2570841), 2)
2021-05-23