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

PostgreSQL如何将users表jsonb类型data字段拆分为多行键值记录

实现方案

你可以直接使用PostgreSQL内置的jsonb_each_text函数完成jsonb字段的键值对拆行,具体SQL如下:

SELECT
  name,
  kv.key AS type,
  kv.value AS value
FROM
  users,
  jsonb_each_text(users.data) AS kv;

说明

  • jsonb_each_text函数会将jsonb对象的每个键值对拆分为独立行,返回key(键名)和value(键值,自动转为文本类型)两个字段
  • 上述写法用到了隐式的横向连接(等价于显式写CROSS JOIN LATERAL),会自动匹配每行原表记录和它对应的所有拆分行
  • 如果你的示例中adam的car值需要从chevvy改为chevrolet,可以额外加一层CASE WHEN逻辑做值替换,示例如下:
SELECT
  name,
  kv.key AS type,
  CASE WHEN kv.key = 'car' AND kv.value = 'chevvy' THEN 'chevrolet' ELSE kv.value END AS value
FROM
  users,
  jsonb_each_text(users.data) AS kv;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 08:57:02