Sql 以MS Access颜色格式获取颜色之间的范围
在数据库中,我只以MS Access颜色格式(BGR的十进制格式)存储颜色:看起来像8689859=>brown=>c39884。。。 但我需要根据颜色范围进行过滤,我的意思是用户使用颜色选择器并选择例如#ffffff颜色。我想返回所有颜色与#ffffff相同的行(不是完全相同的颜色,而是相同范围内的+)Sql 以MS Access颜色格式获取颜色之间的范围,sql,colors,hex,rgb,bgr,Sql,Colors,Hex,Rgb,Bgr,在数据库中,我只以MS Access颜色格式(BGR的十进制格式)存储颜色:看起来像8689859=>brown=>c39884。。。 但我需要根据颜色范围进行过滤,我的意思是用户使用颜色选择器并选择例如#ffffff颜色。我想返回所有颜色与#ffffff相同的行(不是完全相同的颜色,而是相同范围内的+) 有可能吗?我想=-范围应该适用于BGR值中的每个单独颜色元素。在这种情况下,您需要提取这些元素,如下所示: SELECT colour ,Fix([Colour]/(256*256
有可能吗?我想=-范围应该适用于BGR值中的每个单独颜色元素。在这种情况下,您需要提取这些元素,如下所示:
SELECT colour
,Fix([Colour]/(256*256)) as B
,Fix(([Colour]-Fix([Colour]/(256*256))*256*256)/256) as G
,[Colour]-Fix([Colour]/(256*256))*256*256-Fix(([Colour]-Fix([Colour]/(256*256))*256*256)/256)*256 as R
FROM MyColours
我建议您将它们放在单独的函数中,如GetR、GetB、GetG
您甚至可以创建计算字段并将其应用于表:
现在,要查找表格,您还需要将所选颜色拆分为B G R元素:
Dim selectedColour as Integer
Dim rr as Integer
Dim gg as Integer
Dim bb as Integer
selectedColour = 11124168 ' A9BDC8 - selected from the colour picker
rr = getR(selectedColour)
gg = getG(selectedColour)
bb = getB(selectedColour)
如果表中有计算字段,则查询将为:
SELECT colour
FROM MyColours
WHERE B BETWEEN bb-4 AND bb+4
AND G BETWEEN gg-4 AND gg+4
AND R BETWEEN rr-4 AND rr+4
如果不希望计算字段使用VBA函数:
SELECT colour
FROM MyColours
WHERE getB(colour) BETWEEN bb-4 AND bb+4
AND getG(Colour) BETWEEN gg-4 AND gg+4
AND getR(Colour) BETWEEN rr-4 AND rr+4
请用同样的定义。。