postgresql - 如何将json变量转换为postgresql中的表
问题描述
我创建了一个看起来像这样的 JSON 类型变量,名为 group。
'{"SG1": ["2", "4"], "SG2": ["6", "8", "10"], "SG3": ["9"]}'
这个想法是为单个键创建多个值,例如 PF1 是一个具有值列表的组(键)。
我想为这样的 JSON 变量创建一个表,它可以给我这样的输出,
团体 | 价值观 |
---|---|
PF1 | 2,4 |
PF2 | 6,8,10 |
PF3 | 9 |
value 列可以是字符串或逗号分隔的整数值,字符串是首选。我努力了
SELECT group ->> 'PF1' as group_1
from metadata;
这给了我一个空白单元格。
我是第一次在 PostgreSQL 中使用 JSON,所以我不知道可以帮助我实现这一目标的函数。任何帮助表示赞赏。
解决方案
我不清楚您要实现什么,但似乎您希望每个键/值对在输出中作为一行:
select t.*
from metadata m
cross join jsonb_each_text(m."group") as t("group", values)
如果您的group
列不是jsonb
,但json
您需要使用json_each_text()
请注意,这group
是保留关键字,每次使用时都需要引用。如果你找到一个不同的名字会更容易。