对于存储在Postgresql 9.4中的样本#112233
,我有十六进制表示颜色
需要将此表示转换为pl / pgsql函数中的rgb(17,34,51)
有什么想法以最快的方式转换它?
答案 0 :(得分:5)
这使用Erwin's trick将十六进制值转换为整数值:
with colors (hex_code) as (
values ('#112233'), ('#203040')
)
select 'rgb('||
('x'||substr(hex_code,2,2))::bit(8)::int||','||
('x'||substr(hex_code,4,2))::bit(8)::int||','||
('x'||substr(hex_code,6,2))::bit(8)::int||')'
from colors
;
不确定这是否是最快的方式,但我想不出另一种方法。 select
表达式可以毫无问题地移动到函数中。
SQLFiddle演示:http://sqlfiddle.com/#!15/d41d8/3720