json - 在 postgres 中选择或提取 jsonb 数据内的所有键值

标签 json postgresql jsonb

我的 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 中的键(code、title、parent_title 和framework_code)是不变的,它不会因任何值而改变。

帮我提取这个 jsonb 数据。

提前致谢!

最佳答案

在横向连接中使用级联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)

关于json - 在 postgres 中选择或提取 jsonb 数据内的所有键值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39991315/

相关文章:

database - django.contrib.gis.db.backends.postgis 与 django.db.backends.postgresql_psycopg2

sql - 查询包含 JSON 对象数组的 jsonb 列

python - HTTPS GET 请求并读取 JSON 回复

json - 使用新参数 ExtJs Ext.data.JsonStore 重新加载 json 存储

javascript - Ionic 3 JSON 解析错误

python - 处理 sqlalchemy 断开连接的更好方法

javascript - Rails Edge Guides,AJAX 示例 - 为什么同时使用 'format.js' 和 'format.json' ?

java - 具有命名参数的 Hibernate Native Query 问题

arrays - Postgresql jsonb 列表联合

sql - 从 Postgres JSONB 字段中选择缺失值