Sql-Server
將 int 轉換為 RGB 或十六進制顏色
我正在使用一個顏色儲存為整數的數據庫。由於某些未知原因,它們實際上是負整數。
現在,我需要在 CSS
background-color
屬性中使用它們,該屬性接受顏色名稱、RGB 顏色或十六進制顏色。問題是我不知道如何正確轉換它們以獲得可接受的字元串值。我嘗試轉換
-65280
並CONVERT(VARBINARY(8), abs(S.Color))
獲得0x0000FF00
. 但是,我需要的輸出是#00ff00
orrgb(0,255,0)
。我怎樣才能做到這一點?
這三個中的任何一個都應該起作用:
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)
輸出:
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)
CONVERT
with 樣式 2需要SQL Server 2008 或更高版本。該表達式可用於計算列定義或內聯表值函式。