首页 > 解决方案 > 如何将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,所以我不知道可以帮助我实现这一目标的函数。任何帮助表示赞赏。

标签: postgresql

解决方案


我不清楚您要实现什么,但似乎您希望每个键/值对在输出中作为一行:

select t.*
from metadata m
  cross join jsonb_each_text(m."group") as t("group", values)

在线示例

如果您的group列不是jsonb,但json您需要使用json_each_text()


请注意,这group是保留关键字,每次使用时都需要引用。如果你找到一个不同的名字会更容易。


推荐阅读