【问题标题】:select or extract all key values inside a jsonb data in postgres在 postgres 中选择或提取 jsonb 数据中的所有键值
【发布时间】:2017-02-20 19:48:34
【问题描述】:

我的 postgres 表中有一个 jsonb 列,数据被填充并存储在其中。

这是存储在 jsonb 列中的数据示例格式

{
    "unknown_value1": {
        "code": "code 1",
        "title": "sample title 1",
        "parent_title": "parent1",
        "framework_code": "ABC"
    },
    "unknown_value2": {
        "code": "code 2",
        "title": "sample title 2",
        "parent_title": "parent2",
        "framework_code": "ABC"
    }
}

现在我需要从键“parent_title”中提取所有值,而不指定最外层键(unknown_value1,unknown_value2)。

最外面的键是未知的,它可以是任何值,每个数据都会改变。

但是 json 中的键(代码、标题、父标题和框架代码)是恒定的,它不会因任何值而改变。

帮我提取这个jsonb数据。

提前致谢!

【问题讨论】:

    标签: json postgresql jsonb


    【解决方案1】:

    在横向连接中使用级联jsonb_each()

    with data(json_value) as (
    values (
        '{
            "unknown_value1": {
                "code": "code 1",
                "title": "sample title 1",
                "parent_title": "parent1",
                "framework_code": "ABC"
            },
            "unknown_value2": {
                "code": "code 2",
                "title": "sample title 2",
                "parent_title": "parent2",
                "framework_code": "ABC"
            }
        }'::jsonb)
    )
    
    select j1.key as outer_key, j2.key, j2.value
    from data
    cross join lateral jsonb_each(json_value) j1
    cross join lateral jsonb_each(value) j2
    
       outer_key    |      key       |      value       
    ----------------+----------------+------------------
     unknown_value1 | code           | "code 1"
     unknown_value1 | title          | "sample title 1"
     unknown_value1 | parent_title   | "parent1"
     unknown_value1 | framework_code | "ABC"
     unknown_value2 | code           | "code 2"
     unknown_value2 | title          | "sample title 2"
     unknown_value2 | parent_title   | "parent2"
     unknown_value2 | framework_code | "ABC"
    (8 rows)
    

    【讨论】:

      猜你喜欢
      • 2018-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-20
      相关资源
      最近更新 更多