postgresql - Postgres:如何在 psql 查询中的字符串中插入双引号?
问题描述
我有这个查询,它工作得很好。这里,“数据”是“信息”表中的 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;
推荐阅读
- google-cloud-platform - 在 gcp 云 shell 上运行代码服务器在预览时会出错
- javascript - 我正在运行一个基本的 HTML 和 Javascript 应用程序(连接到 Google 和 Twilio API),并且不断收到未定义变量的引用错误
- html - JQuery 读取旧版本的文件
- javascript - 自定义配置导致的奇怪 CORS 问题
- html - Safari 选择/下拉选项未与输入标签对齐
- python - Turtle exitonclick 使用时会报错
- java - Spring Boot 更改 URL 并破坏静态资产
- laravel - 在 Heroku 上使用带有 ClearDB 数据库的 Laravel Docker 容器 yields: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed
- glassfish - 我尝试将 glassfish 服务器与我的 Eclipse 集成,但出现错误“找不到基本名称的捆绑包”
- c# - 用组合框替换下拉列表(可编辑的下拉列表)