首页/数据/SQL 速查/jsonb_array_elements 展开数组(PostgreSQL)
本包目录(311 条)
查询基础33 条连接与子查询40 条聚合与窗口函数54 条
函数速查60 条
变更与事务52 条性能与执行计划72 条

jsonb_array_elements 展开数组(PostgreSQL)

PostgreSQL 把 JSON 数组展开成多行的惯用函数族:可带文本版本与序号,是处理 JSON 明细的基础操作。

SQL 速查数据更新于 2026-10-12

示例

示例
-- 逐元素展开(保持 jsonb 类型)
SELECT id, elem FROM orders, jsonb_array_elements(items) AS elem;

-- 直接取文本
SELECT id, jsonb_array_elements_text(items) AS sku FROM orders;

-- 带序号(WITH ORDINALITY)
SELECT id, elem, idx
FROM orders,
     jsonb_array_elements(items) WITH ORDINALITY AS t(elem, idx);
返回每行一个元素(setof jsonb / setof text)
序号WITH ORDINALITY 给出 1 起的下标
配合CROSS JOIN LATERAL 的隐式写法;空数组产生零行

易错点

  • 在 SELECT 列表里调用集合返回函数与写在 FROM 里行为不同(行数展开方式不同),统一放 FROM/LATERAL 更清晰
  • 元素是 jsonb 时比较要转文本(elem->>'k')或显式 ::text,直接与字符串比较会报类型错误

数据来源与参考

  • PostgreSQL Documentation · JSON Functions and Operators
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌