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

PostgreSQL 14中如何拼接JSONB数组对象内的字段为字符串

PostgreSQL JSONB数组字段值拼接解决方案

你当前的查询使用jsonb_path_query会将数组中每个匹配的元素拆分为单独行,导致结果重复;同时该函数会自动过滤无匹配结果的行,不符合保留所有ID并返回NULL的需求。

解决方案

使用jsonb_path_query_array收集所有匹配的字段值为JSON数组,再通过jsonb_array_text转换为文本数组,最后用array_to_string拼接成逗号分隔的字符串。这种方式会保留所有原始ID,无匹配值时返回NULL。

完整查询代码

SELECT 
  t.id,
  array_to_string(jsonb_array_text(jsonb_path_query_array(t.b, '$."obj1"."obj2"."obj3"[*]."obj4"."obj"')), ',') AS obj5
FROM (
  VALUES
    (1, '{"obj1":{"obj2":{"obj3":[{"obj4":{"obj":"A"}},{"obj4":{"obj":"B"}}]}}}'::jsonb),
    (2, '{"obj1":{"obj2":{"obj3":[{"obj4":{"obj":"C"}},{"obj4":{"obj":"D"}}]}}}'::jsonb),
    (3, '{}'::jsonb)
) t(id, b);

执行结果

该查询会输出你期望的格式:

id | obj5
----+------
  1 | A,B
  2 | C,D
  3 | NULL

内容的提问来源于stack exchange,提问作者Isabela Oliveira Bardelli

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 20:20:52