LINUX.ORG.RU

postgres: string2hex


0

1

есть таблица:

CREATE TABLE ccc (x text); INSERT INTO ccc (x) values ('aa');

теперь мне надо выбрать шестнадцатиричное значение каждого символа в строке. те в данном случае это должно быть 6161, это можно сделать так:

select ENCODE(x::bytea, 'hex') from ccc;

а теперь положим был такой INSERT:

INSERT INTO ccc (x) values ('\');

как получить в данном случае 615c61 ?

экранировать символы в строке при INSERT не предлагать, данные УЖЕ в таблицах.

★★★★

второй INSERT: INSERT INTO ccc (x) values ('a\a');

quest ★★★★
() автор топика

перерыл уже кучу возможных вариантов.

можно конечно сделать так:

select quote_literal(x) from ccc; quote_literal --------------- E'a\\a'

select ENCODE(quote_literal(x)::bytea, 'hex') from ccc; encode -------------- 4527615c6127

а потом отрезать в начале 4 символа и в конце два, но это какой то совсем не красивый костыль...

quest ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.