Mar*_*ark 6 sql-server t-sql type-conversion
我正在使用一个数据库,其中颜色存储为整数。由于某些未知原因,它们实际上是负整数。
现在,我需要在 CSSbackground-color
属性中使用它们,该属性接受颜色名称、RGB 颜色或十六进制颜色。问题是我不知道如何正确转换它们以获得可接受的字符串值。
我尝试使用转换-65280
,CONVERT(VARBINARY(8), abs(S.Color))
我正在获取0x0000FF00
. 但是,我需要的输出是#00ff00
或rgb(0,255,0)
。我怎样才能做到这一点?
Jul*_*eur 10
这三个中的任何一个都应该工作:
SELECT color
, HEX_1 = '#'
+ CONVERT(varchar(6),
CAST(ABS(color) as varbinary(1))
+ CAST(ABS(color/256) as varbinary(1))
+ CAST(ABS(color/256/256) as varbinary(1))
, 2)
, HEX_2 = '#'+
+CONVERT(varchar(2), CAST(ABS(color) as varbinary(1)), 2)
+CONVERT(varchar(2), CAST(ABS(color/256) as varbinary(1)), 2)
+CONVERT(varchar(2), CAST(ABS(color/256/256) as varbinary(1)), 2)
, RGB = 'rgb('
+ CAST(ABS(color)%256 as varchar(3)) + ','
+ CAST(ABS(color/256)%256 as varchar(3)) + ','
+ CAST(ABS(color/256/256)%256 as varchar(3)) + ')'
FROM (
values
(-65280)
, (-65535)
, (-460293)
, (-13606962)
, (-3678732)
) as colors(color)
Run Code Online (Sandbox Code Playgroud)
输出:
color | HEX_1 | HEX_2 | RGB
-65280 | #00FF00 | #00FF00 | rgb(0,255,0)
-65535 | #FFFF00 | #FFFF00 | rgb(255,255,0)
-460293 | #050607 | #050607 | rgb(5,6,7)
-13606962 | #32A0CF | #32A0CF | rgb(50,160,207)
-3678732 | #0C2238 | #0C2238 | rgb(12,34,56)
Run Code Online (Sandbox Code Playgroud)
该CONVERT
风格2需要SQL Server 2008或更高版本。
该表达式可用于计算列定义或内联表值函数。
归档时间: |
|
查看次数: |
8353 次 |
最近记录: |