Postgres: 如何在psql查询的字符串中插入双引号?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Postgres: 如何在psql查询的字符串中插入双引号?相关的知识,希望对你有一定的参考价值。
我有这样一个查询,它的工作完全正常。这里,"data "是 "info "表中的一个jsonb列。
select data from info where data @> '"last_name": "Pinkman"';
现在,我必须在一个函数中传递这个特殊的查询作为参数。在这个函数中,我试图以下面的方式将这个查询连接起来形成一个jsonb对象,但是我得到了一个错误。
CREATE OR REPLACE FUNCTION run_query(query text) RETURNS jsonb AS $$
DECLARE
obj text;
BEGIN
obj := '' || '"query"' || ':"' || query || '"';
RETURN obj::jsonb;
END
$$ LANGUAGE plpgsql;
db=# select run_query('select data from info where data @> ''"last_name": "Pinkman"''');
ERROR: invalid input syntax for type json
DETAIL: Token "last_name" is invalid.
CONTEXT: JSON data, line 1: ..."select data from info where data @> '"last_name...
PL/pgSQL function run_query(text) line 6 at RETURN
我知道我可以使用jsonb_build_object()来创建对象,但我必须先将其创建为一个字符串,然后再投射到jsonb中。我应该怎么做呢?谢谢。
答案
我知道我可以使用jsonb_build_object()来创建对象,但是我必须先把它创建成一个字符串。
那就这样做吧。
CREATE OR REPLACE FUNCTION run_query(query text)
RETURNS jsonb
AS
$$
DECLARE
obj text;
BEGIN
obj := jsonb_build_object('query', query)::text;
... work with the text ...
RETURN obj::jsonb;
END
$$
LANGUAGE plpgsql;
以上是关于Postgres: 如何在psql查询的字符串中插入双引号?的主要内容,如果未能解决你的问题,请参考以下文章
Postgres/PSQL - 使用批处理文件自动将查询导出到 CSV
Postgres 选择查询在使用 JDBC 时运行缓慢,但在从同一服务器在 PSQL 中运行时快速