Запросить поле байта в postgres через командную строку - PullRequest
7 голосов
/ 10 июля 2011

У меня есть таблица с полем bytea, и было бы удобно, если бы я мог выполнять запросы через командную строку (или исполнителя запросов pgAdmin).Я получил шестнадцатеричное значение в виде строки.Есть ли встроенная функция для преобразования шестнадцатеричного числа в байтовый?.

Примечание: это просто полезно, когда я занимаюсь разработкой / отладкой, я могу сделать это с помощью кода, но я бы хотел сделать это вручную в запросе.

Ответы [ 2 ]

5 голосов
/ 10 июля 2011

Попробуйте использовать встроенную функцию decode(string text, type text) (возвращает bytea). Вы можете запускать запросы через CLI, используя psql в неинтерактивном режиме, то есть с переключателем -c (есть некоторые параметры форматирования, если хотите):

psql -c "SELECT * FROM table WHERE my_bytea_field=decode('fa26e312', 'hex');"

Пример:

CREATE TABLE test(id serial, my_bytea_field bytea);
INSERT INTO test (my_bytea_field) VALUES
    (E'\\320\\170'::bytea),
    (E'\\100\\070'::bytea),
    (E'\\377\\377'::bytea);

psql -tc "SELECT * FROM test WHERE my_bytea_field=decode('ffff', 'hex');"
  3 | \377\377
0 голосов
/ 16 августа 2013
SELECT * FROM table WHERE my_bytea_field=E'\\xfa26e312';

Как в примере с двоичными типами данных документы (обратите внимание на префикс E '\\ x'):

SELECT E'\\xDEADBEEF';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...