You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL中是否有函数可将JSONB对象的键转为列?

提取PostgreSQL JSONB列中的字段为普通列

假设我们已经创建了存储JSONB数据的表并插入了测试数据:

CREATE TABLE data (obj JSONB); 
INSERT INTO data (obj) VALUES ('{"a": 1, "b": 2}'::jsonb); 
INSERT INTO data (obj) VALUES ('{"a": 3, "b": 4}'::jsonb);

现在需要把JSONB对象里的a和b字段提取出来,生成如下的常规表格结果:

a | b
---|---
 1 | 2
 3 | 4

可行的查询语句

使用PostgreSQL内置的jsonb_to_record()函数就能轻松实现这个需求,结合隐式交叉连接语法,查询语句如下:

SELECT x.* 
FROM data, 
     jsonb_to_record(obj) AS x(a text, b text);

小提示

如果你需要a和b是数值类型(比如整数),可以把定义里的text改成int,比如:

SELECT x.* 
FROM data, 
     jsonb_to_record(obj) AS x(a int, b int);

这个函数的作用是把单个JSONB对象解析成符合你指定结构的行记录,配合表连接后就能将JSON里的字段转换成普通列输出啦。

内容的提问来源于stack exchange,提问作者martin8768

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:09:00