我一直在寻找做这样的事情并想出了这篇文章。这很有帮助,但我发现它更有吸引力,如下所示。 请注意,结果可以在 SSRS 颜色表达式中使用,无需额外转换
select CustomerID
,SSRSColor = '#' + SUBSTRING(S.TXTHEXColor, 5, 2)
+ SUBSTRING(S.TXTHEXColor, 3, 2)
+ SUBSTRING(S.TXTHEXColor, 1, 2)
from
(
Select CustomerID
,[TXTHEXColor] = right(sys.fn_varbintohexstr(CONVERT(varbinary, T.Color)), 6)
From SomeTable T
) S
如果仍然需要一个函数,那么跟随是一种更短的方法,但请记住,使用大记录集的函数会大大减慢这个过程。
CREATE FUNCTION [dbo].[SSRSColor] (
@ARGB AS INT
)
RETURNS VARCHAR(7)
AS
BEGIN
DECLARE @TXTHEXColor varchar(100)
Select @TXTHEXColor = right(sys.fn_varbintohexstr(CONVERT(varbinary, @ARGB)), 6)
return '#' + SUBSTRING(@TXTHEXColor, 5, 2) + SUBSTRING(@TXTHEXColor, 3, 2) + SUBSTRING(@TXTHEXColor, 1, 2)
END