unnest()
是一个将数组或数组组合扩展到一组行的系统函数。
unnest()
在PostgreSQL 8.4 中添加。
用法
unnest (anyarray
) → setofanyelement
PostgreSQL 9.4 及更高版本
unnest (anyarray
,anyarray
[, ... ] ) → setofanyelement
,anyelement
[, ... ]
更改历史记录
- PostgreSQL 15
- PostgreSQL 9.4
- 添加了多参数形式(提交 784e762e)
- PostgreSQL 8.4
- 添加(提交 c889ebce)
示例
unnest()
的基本用法
postgres=# SELECT unnest(ARRAY[1,2,3]); unnest -------- 1 2 3 (3 rows) postgres=# SELECT unnest('{1,2,3}'::INT[]); unnest -------- 1 2 3 (3 rows)
将多个数组扩展到一组行
postgres=# SELECT * FROM unnest(ARRAY[1,2,3], ARRAY['foo','bar','baz']) AS x(id, val); id | val ----+----- 1 | foo 2 | bar 3 | baz (3 rows)
请注意,此变体仅在 FROM
子句中可用。
将不同长度的多个数组扩展到一组行
postgres=# SELECT * FROM unnest(ARRAY[1,2], ARRAY['foo','bar','baz','boo'], ARRAY['a','b','c']) AS x(id, val); id | val | unnest ----+-----+-------- 1 | foo | a 2 | bar | b | baz | c | boo | (4 rows)
参考文献
- PostgreSQL 文档: 数组函数