You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL 16中如何用变量路径调用jsonb_path_query_first?

问题解决方法

问题核心是参数类型不匹配:jsonb_path_query_first函数的第二个参数要求是jsonpath类型,但你CTE中的path字段定义为text类型,PostgreSQL无法自动完成隐式类型转换,因此触发报错。

只需将text类型的路径值转换为jsonpath类型即可解决,提供两种实现方式:

方法一:在CTE中直接定义jsonpath类型路径

with x as
 (select '{"a": {"b": {"c": "d"}}}'::jsonb data),
 y as
 (select '$.a.b.c'::jsonpath path) -- 直接指定为jsonpath类型
select *,
 jsonb_path_query_first(x.data, y.path)
from x, y;

方法二:调用函数时显式转换类型

with x as
 (select '{"a": {"b": {"c": "d"}}}'::jsonb data),
 y as
 (select '$.a.b.c'::text path)
select *,
 jsonb_path_query_first(x.data, y.path::jsonpath) -- 显式将text转为jsonpath
from x, y;

两种方式都能正常提取JSON数据,推荐第一种,可提前明确类型,避免后续重复转换操作。

内容的提问来源于stack exchange,提问作者Roeland Van Heddegem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 02:39:51