Sql server 将颜色名称转换为RGB
我有一个记录表,每个记录表存储一个颜色名称。e、 g:Sql server 将颜色名称转换为RGB,sql-server,sql-server-2005,colors,rgb,Sql Server,Sql Server 2005,Colors,Rgb,我有一个记录表,每个记录表存储一个颜色名称。e、 g: Product | Colour ------------------- Product A | Blue Product B | Black 我添加了3个新列:R、G和B。如何使用一个SQL查询将颜色转换为RGB值?您需要自己为相应的名称添加RGB值,无法从颜色名称中获得该信息(毕竟是什么构成了“深蓝色”?) 您可以使用for提示来构建初始查找表 您需要在用于更新表的同一查询中将颜色解码为RGB值。当您不使用任何函数、变
Product | Colour
-------------------
Product A | Blue
Product B | Black
我添加了3个新列:R、G和B。如何使用一个SQL查询将颜色转换为RGB值?您需要自己为相应的名称添加RGB值,无法从颜色名称中获得该信息(毕竟是什么构成了“深蓝色”?)
您可以使用for提示来构建初始查找表 您需要在用于更新表的同一查询中将颜色解码为RGB值。当您不使用任何函数、变量或其他表时,可以使用CASE表达式来完成。这不是一个优雅的解决方案,但它会起作用
更新产品
设置
r=(外壳颜色)
当“黑色”时,则为0
当“红色”时,则为255
当“绿色”时,则为0
当“蓝色”时,则为0
当“白色”时,则为255
否则无效
(完),,
g=(外壳颜色)
当“黑色”时,则为0
当“红色”时,则为0
当“绿色”时,则为255
当“蓝色”时,则为0
当“白色”时,则为255
否则无效
(完),,
b=(外壳颜色)
当“黑色”时,则为0
当“红色”时,则为0
当“绿色”时,则为0
当“蓝色”时,则为255
当“白色”时,则为255
否则无效
(完)
或者可以通过以下方式:
更新产品
设置
r=(例)
当颜色为(“黑色”、“绿色”、“蓝色”)时,则为0
当颜色为(‘红色’、‘白色’)时,则为255
否则无效
(完),,
g=(案例)
当颜色为(“黑色”、“红色”、“蓝色”)时,则为0
当颜色为(‘绿色’、‘白色’)时,则为255
否则无效
(完),,
b=(案例)
当颜色为(“黑色”、“红色”、“绿色”)时,则为0
当颜色为(‘蓝色’、‘白色’)时,则为255
否则无效
(完)
没有内置的SQL Server函数从颜色名称获取RGB值。您已经有映射表了吗?如果您询问如何将“蓝色”转换为RGB值…您不能。无论如何,SQL中没有。唯一的方法是将每个颜色名称映射到一组RGB值,但这需要手动输入。我认为查找表是最好的选择,因为在构建之后添加到它是很简单的。这非常感谢。所有的系统颜色都不存在,但任何缺少的颜色我都可以添加到CTE中。亲爱的,干杯!
;with Colours(Name, R, G, B) as
(
select 'White', 255, 255, 255 union all
select 'Silver', 192, 192, 192 union all
select 'Gray', 128, 128, 128 union all
select 'Black', 0 , 0 , 0 union all
select 'Red', 255, 0 , 0 union all
select 'Maroon', 128, 0 , 0 union all
select 'Yellow', 255, 255, 0 union all
select 'Olive', 128, 128, 0 union all
select 'Lime', 0 , 255, 0 union all
select 'Green', 0 , 128, 0 union all
select 'Aqua', 0 , 255, 255 union all
select 'Teal', 0 , 128, 128 union all
select 'Blue', 0 , 0 , 255 union all
select 'Navy', 0 , 0 , 128 union all
select 'Fuchsia', 255, 0 , 255 union all
select 'Purple', 128, 0 , 128
)
update P set
R = C.R,
G = C.G,
B = C.B
from products as P
inner join Colours as C
on P.Colour = C.Name