我有十六進制表示的顏色,存儲在PostgreSQL 9.4樣品#112233
的Postgres 9.4:快捷方式的顏色轉換從十六進制RGB表示
需要這樣表示轉換爲rgb(17,34,51)
在PL/pgSQL函數
任何想法將其轉換成最快的方式?
我有十六進制表示的顏色,存儲在PostgreSQL 9.4樣品#112233
的Postgres 9.4:快捷方式的顏色轉換從十六進制RGB表示
需要這樣表示轉換爲rgb(17,34,51)
在PL/pgSQL函數
任何想法將其轉換成最快的方式?
它使用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
它存儲爲什麼類型? – Mureinik 2014-10-18 14:54:44
表字段類型是文字 – Dmitry 2014-10-18 14:55:56