декодировать гекс в PostgreSQL - получена ошибка "нечетное количество цифр" - PullRequest
3 голосов
/ 07 августа 2011

У меня проблема с использованием этого запроса:

select decode(to_hex(ascii('ل')::int),'hex')

Когда я его выполняю, я получаю:

ERROR: invalid hexadecimal data: odd number of digits

Ответы [ 2 ]

2 голосов
/ 08 августа 2011

decode(..., 'hex') не означает преобразование этого шестнадцатеричного числа во что-то. Шестнадцатеричное кодирование - это особый формат кодирования для байтов, для которого требуется две шестнадцатеричные цифры на октет. С другой стороны, to_hex преобразует целое число в шестнадцатеричное представление, которое может иметь четное или нечетное число цифр.

Таким образом, ответ таков: вы не можете этого сделать (без некоторых ручных исправлений). И непонятно, зачем тебе это тоже нужно. Похоже, вы могли бы просто сделать 'ل'::bytea, но это может быть и не то, что вы хотели.

0 голосов
/ 08 августа 2011

Может быть проще использовать что-то вроде этого:

select encode('ل','escape');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...