to_hex() の逆関数は標準では提供されていません。
PL/pgSQL が使える環境であれば「Conversion between hex and dec numbers(16進数と10進数の変換)」(SQL Tricks)のページで定義している to_dec() 関数を使うのが便利です。
=# select to_hex(11);
to_hex
——–
b
(1 row)
postgres=# create or replace function to_dec(text)
returns integer as $$
declare r int;
begin
execute E’select ”||$1|| E’\’::integer’ into r;
return r;
end
$$ language plpgsql;
CREATE FUNCTION
postgres=# select to_dec(‘ff’);
to_dec
—-
255
(1 row)
別の方法として、16進数を1度ビット型に変換することでも10進数に変換できます(桁数が分かっている場合のみ)。
たとえば、2桁の16進数文字列 の hextext というカラムを10進数に変換した居場合は次のようになります。
SELECT (‘x’ || hextext)::bit(8)::integer — bit(桁数の4倍)