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

PostgreSQL JSONB:如何获取第一个存在的路径对应的值

获取JSONB中第一个存在的路径值(PostgreSQL)

可以实现,你之前的语句执行失败是因为jsonb_path_query_first不支持直接传入多个独立路径作为参数,必须用符合规范的JSON路径表达式或其他组合方式实现“优先匹配第一个存在路径”的逻辑。

方法一:用JSON路径表达式的逻辑或(推荐)

利用JSON路径的||逻辑或运算符,结合exists()检查路径是否存在,表达式会按顺序匹配第一个存在的路径并返回对应值:

SELECT jsonb_path_query_first(
  jsonb_data,
  '$.address.region ? (@ exists()) || $.phone ? (@ exists())'
)
FROM your_table;

针对你提供的JSON数据,这个语句会返回1234567(因为$.address.region不存在,自动匹配下一个路径$.phone)。

方法二:用coalesce组合单个路径查询

通过coalesce函数依次检查每个路径的查询结果,返回第一个非空值:

SELECT coalesce(
  jsonb_path_query_first(jsonb_data, '$.address.region'),
  jsonb_path_query_first(jsonb_data, '$.phone')
)
FROM your_table;

这个写法更直观,适合路径较多的场景,同样会返回1234567。

内容的提问来源于stack exchange,提问作者Shay Zambrovski

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 13:32:42