use*_*130 5 sql t-sql hex colors sql-server-2008
如何将整数转换为十六进制的字符串?我想将int转换为我可以在页面上用作颜色的格式,例如'#ff0000'.
例如:
--This converts my int to hex:
CONVERT(VARBINARY(8), Color) Color,
Run Code Online (Sandbox Code Playgroud)
我想做这样的事情:
'#' + CONVERT(NVARCHAR(10), CONVERT(VARBINARY(8), Color)) Color
Run Code Online (Sandbox Code Playgroud)
但转换varbinary字符串只是将其转换为ascii字符,而不是返回实际的十六进制字符串
有一个内置函数可以从二进制值生成十六进制字符串
SELECT
'#' + sys.fn_varbintohexstr(CONVERT(BINARY(3), 0)),
'#' + sys.fn_varbintohexstr(CONVERT(BINARY(3), 255))
Run Code Online (Sandbox Code Playgroud)
您需要binary(3)确保输出字符串的正确长度
这是错误的.你得到4个十六进制数字,因为0和255这里是4个字节的int值
SELECT
'#' + sys.fn_varbintohexstr(CONVERT(varBINARY(8), 0)),
'#' + sys.fn_varbintohexstr(CONVERT(varBINARY(8), 255))
Run Code Online (Sandbox Code Playgroud)
2017年10月更新:
现在转换内置于SQL Server(自2008年起!!),因此我们可以简单地使用CONVERT
SELECT '#' + CONVERT(char(6), CONVERT(BINARY(3), 2570841), 2)
Run Code Online (Sandbox Code Playgroud)