Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 将颜色名称转换为RGB_Sql Server_Sql Server 2005_Colors_Rgb - Fatal编程技术网

Sql server 将颜色名称转换为RGB

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值。当您不使用任何函数、变

我有一个记录表,每个记录表存储一个颜色名称。e、 g:

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