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

Postgres中JSON列嵌套对象值查询:按指定code提取对应bezeichnung_de的方法

Postgres JSON列查询解决方案

基础查询(固定传入code值)

假设你的表名为my_table,存储JSON的列名为json_data,以查询code=86为例,语句如下:

SELECT
  '86' AS "Code",
  json_data -> 'objekt_art' -> '86' ->> 'bezeichnung_de' AS "Bez"
FROM my_table
-- 过滤不存在对应code的行,JSONB类型用以下条件
WHERE json_data -> 'objekt_art' ? '86'
-- JSON类型请替换成下面的条件
-- WHERE json_data -> 'objekt_art' -> '86' IS NOT NULL

关联其他表code查询

如果你需要匹配的code存储在另一张关联表(比如表名为other_table,code字段名为code),可以先拆析JSON再关联查询:

SELECT
  art.value ->> 'code' AS "Code",
  art.value ->> 'bezeichnung_de' AS "Bez"
FROM my_table t
-- JSON类型用json_each,JSONB类型替换为jsonb_each性能更好
, json_each(t.json_data -> 'objekt_art') art
INNER JOIN other_table ot 
  ON ot.code = art.value ->> 'code'
-- 可选:添加过滤条件指定具体code
-- WHERE ot.code = '86'

运算符说明

  • ->:返回JSON类型的子节点,可继续嵌套访问下级节点
  • ->>:返回文本类型的JSON节点值,适合直接读取字段内容
  • ?:仅JSONB类型支持,用于判断JSON对象是否包含指定key

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 18:09:00