【问题标题】:Flattening JSONB array in postgres在 postgres 中展平 JSONB 数组
【发布时间】:2016-08-10 19:28:22
【问题描述】:

我正在使用 Postgres 9.4 并将我的数据存储为 JSONB 数组。我正在寻找一种方法来提取数组中的 json 元素并使用 psql 将它们替换为一个连接的 json 元素。以下表为例:

'aaa' | [{"a":"foo"},{"b":"bar"},{"c":["baz", 'boom']}]  | 404
'bbb' | [{"bar":"foo"}]                                  | 501

我想要实现的是:

'aaa' | {"a":"foo", "b":"bar", "c":["baz", "boom"]}     | 404
'bbb' | {"bar":"foo"}                                   | 501

我尝试使用 json 类型的内置 postgres 函数来实现它。但我只知道如何在确切位置提取元素。 提前致谢。

【问题讨论】:

    标签: postgresql jsonb


    【解决方案1】:
    SELECT  id, jo.obj
    FROM    mytable
    CROSS JOIN
            LATERAL
            (
            SELECT  JSON_OBJECT_AGG(jt.key, jt.value) obj
            FROM    JSONB_ARRAY_ELEMENTS(data) je
            CROSS JOIN
                    LATERAL JSONB_EACH(je.value) jt
            ) jo
    

    【讨论】:

      猜你喜欢
      • 2017-07-13
      • 1970-01-01
      • 1970-01-01
      • 2019-06-14
      • 1970-01-01
      • 2019-03-21
      • 2021-03-19
      • 2015-09-10
      • 2023-03-16
      相关资源
      最近更新 更多