如何在 PostgreSQL 中将 jsonb 字段解析为没有键的列
How to parse jsonb field into columns without keys in PostgreSQL
我有 table login( id int, meta_skills jsonb)
,但是 jsonb
没有存储在键值对中。
jsonb
字段中的数据看起来像
{
"Cat1": [
{
"Skill_1": 2,
"Skill_2": 2,
"Skill_3": 2,
"Skill_4": 2,
"Skill_5": 2
}
],
"Cat2": [
{
"Skill_1": 3,
"Skill_2": 2,
"Skill_3": 3
}
],
"Cat3": [
{
"Skill_1": 2,
"Skill_2": 2,
"Skill_3": 2,
"Skill_4": 2
}
]
}
技能值是随机值。
我想按以下格式准备数据
您必须取消嵌套关卡:
SELECT login.id,
u1.category,
u3.skill,
u3.level
FROM login
CROSS JOIN LATERAL jsonb_each(login.meta_skills) AS u1(category,v)
CROSS JOIN LATERAL jsonb_array_elements(u1.v) AS u2(v)
CROSS JOIN LATERAL jsonb_each(u2.v) AS u3(skill, level);
我有 table login( id int, meta_skills jsonb)
,但是 jsonb
没有存储在键值对中。
jsonb
字段中的数据看起来像
{
"Cat1": [
{
"Skill_1": 2,
"Skill_2": 2,
"Skill_3": 2,
"Skill_4": 2,
"Skill_5": 2
}
],
"Cat2": [
{
"Skill_1": 3,
"Skill_2": 2,
"Skill_3": 3
}
],
"Cat3": [
{
"Skill_1": 2,
"Skill_2": 2,
"Skill_3": 2,
"Skill_4": 2
}
]
}
技能值是随机值。 我想按以下格式准备数据
您必须取消嵌套关卡:
SELECT login.id,
u1.category,
u3.skill,
u3.level
FROM login
CROSS JOIN LATERAL jsonb_each(login.meta_skills) AS u1(category,v)
CROSS JOIN LATERAL jsonb_array_elements(u1.v) AS u2(v)
CROSS JOIN LATERAL jsonb_each(u2.v) AS u3(skill, level);