通过命令行查询postgres中的bytea字段

Joh*_*ith 7 postgresql

我有一个带有bytea字段的表,如果我可以通过命令行(或pgAdmin的查询执行程序)进行查询,那将会很方便.我将十六进制值作为字符串.是否有内置函数将十六进制转换为bytea?

我想做点什么:

SELECT * FROM table WHERE my_bytea_field=some_???_function('fa26e312');
Run Code Online (Sandbox Code Playgroud)

其中'fa26e312'是我想要的bytea字段的十六进制值.

注意:这只是为了在我开发/调试时有所帮助,我可以通过代码完成,但我希望能够在查询中手动完成.

Grz*_*ski 5

尝试使用内置decode(string text, type text)函数(它返回bytea)。您可以通过CLI psql在非交互模式下(通过-cswitch)运行查询(如果需要,可以使用一些格式化选项):

psql -c "SELECT * FROM table WHERE my_bytea_field=decode('fa26e312', 'hex');"
Run Code Online (Sandbox Code Playgroud)

例:

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
Run Code Online (Sandbox Code Playgroud)