在 SELECT 查询结果中展开嵌套的 JSONB 数据
Expand nested JSONB data in SELECT query result
假设我有一个 table 和 JSONB 数据:
create table x (
id integer primary key generated always as identity,
name text,
data jsonb
);
假设数据可以有嵌套数据,我想显示数据中的所有数据以获得这种结果:
id name data.a data.b.0 data.b.1 data.c
1 test 1 foo bar baz
2 test2 789 pim pam boom
有没有办法在不指定所有 JSONB 属性名称的情况下执行此操作?
JSONB_TO_RECORDSET()
函数可能会在这样的 Select 语句中使用
SELECT a AS "data.a",
(b::JSONB) ->> 0 AS "data.b.0", (b::JSONB) ->> 1 AS "data.b.1",
c AS "data.c"
FROM x,
JSONB_TO_RECORDSET(data) AS j(a INT, b TEXT, c TEXT)
ORDER BY id
假设您在数据列中有这样的 JSONB 值
[ { "a": 1, "b": ["foo","bar"], "c": "baz" }]
[ { "a": 789, "b": ["pim","pam"], "c": "boom" }]
假设我有一个 table 和 JSONB 数据:
create table x (
id integer primary key generated always as identity,
name text,
data jsonb
);
假设数据可以有嵌套数据,我想显示数据中的所有数据以获得这种结果:
id name data.a data.b.0 data.b.1 data.c
1 test 1 foo bar baz
2 test2 789 pim pam boom
有没有办法在不指定所有 JSONB 属性名称的情况下执行此操作?
JSONB_TO_RECORDSET()
函数可能会在这样的 Select 语句中使用
SELECT a AS "data.a",
(b::JSONB) ->> 0 AS "data.b.0", (b::JSONB) ->> 1 AS "data.b.1",
c AS "data.c"
FROM x,
JSONB_TO_RECORDSET(data) AS j(a INT, b TEXT, c TEXT)
ORDER BY id
假设您在数据列中有这样的 JSONB 值
[ { "a": 1, "b": ["foo","bar"], "c": "baz" }]
[ { "a": 789, "b": ["pim","pam"], "c": "boom" }]