Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- target_color
- 'rgb(200,200,200)'
- 'rgb(190,29,209)'
- target_hue ~ target_saturation ~ target_lightness ~ hex_value
- 10 ~ 40 ~ 40 ~ a567ff
- SET @rgb := 'rgb(190,29,209)' ;
- SELECT @rgb
- , @rgbv := SUBSTRING_INDEX(SUBSTRING_INDEX(@rgb,'rgb(',-1),')',1) AS `@rgbv`
- , @v1 := SUBSTRING_INDEX(@rgbv,',',1) AS `@v1`
- , @v2 := SUBSTRING_INDEX(SUBSTRING_INDEX(@rgbv,',',2),',',-1) AS `@v2`
- , @v3 := SUBSTRING_INDEX(SUBSTRING_INDEX(@rgbv,',',3),',',-1) AS `@v3`
- , 0 + @v1 AS R
- , 0 + @v2 AS G
- , 0 + @v3 AS B
- GREATEST(0+@v1,0+@v2,0+@v3) - LEAST(0+@v1,0+@v2,0+@v3)
- IF(0+@v1>0+@v2
- ,IF(0+@v1>0+@v3,0+@v1,IF(0+@v2>0+@v3,0+@v2,0+@v3))
- ,IF(0+@v2>0+@v3,0+@v2,0+@v3)
- ) AS `max(R,G,B)`
- IF(0+@v1<0+@v2
- ,IF(0+@v1<0+@v3,0+@v1,IF(0+@v2<0+@v3,0+@v2,0+@v3))
- ,IF(0+@v2<0+@v3,0+@v2,0+@v3)
- ) AS `min(R,G,B)`
- SELECT s.R
- , s.G
- , s.B
- , IF(s.R>s.G,IF(s.R>s.B,s.R,s.B),IF(s.G>s.B,s.G,s.B)) AS `max(R,G,B)`
- , IF(s.R<s.G,IF(s.R<s.B,s.R,s.B),IF(s.G<s.B,s.G,s.B)) AS `min(R,G,B)`
- FROM (
- SELECT t.rgb
- , @rgbv := SUBSTRING_INDEX(SUBSTRING_INDEX(t.rgb,'rgb(',-1),')',1) AS `@rgbv`
- , @v1 := SUBSTRING_INDEX(@rgbv,',',1) AS `@v1`
- , @v2 := SUBSTRING_INDEX(SUBSTRING_INDEX(@rgbv,',',2),',',-1) AS `@v2`
- , @v3 := SUBSTRING_INDEX(SUBSTRING_INDEX(@rgbv,',',3),',',-1) AS `@v3`
- , 0 + @v1 AS v1
- , 0 + @v2 AS v2
- , 0 + @v3 AS v3
- FROM mytable t
- ) s
- select
- substring(rgb, locate('(',rgb)+1,locate(',',rgb) -1 - locate('(',rgb)) as red,
- substring(substring_index(rgb,',',2) , locate(',',rgb)+1) as green,
- substring(rgb, locate(',',rgb, locate(',',rgb)+1 )+1 , locate(')',rgb)
- -1 - locate(',',rgb, locate(',',rgb)+1 )) as blue
- red green blue
- 190 29 209
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement