pgsql unnest
时间: 2025-01-16 12:54:12 浏览: 55
### PostgreSQL `unnest` 函数详解
#### 定义与功能
`unnest` 是一种用于数组操作的强大函数,在 PostgreSQL 中被广泛应用于将数组展开成多行记录。该函数可以接受一个或多维数组作为输入参数,并返回一系列单个元素,每一行为一个元素。
```sql
SELECT unnest(array[1, 2, 3]);
```
上述 SQL 查询会生成三行输出,每行分别对应于给定整数数组中的各个成员[^1]。
#### 处理复杂结构的数据集
当面对更复杂的场景时,比如处理嵌套数组或多个并列的数组列表,`unnest` 同样能胜任。对于这种情况,可以通过指定额外的参数来实现同步解包:
```sql
WITH example AS (
SELECT array['a', 'b'] as letters,
array[10, 20] as numbers
)
SELECT * FROM unnest(letters, numbers) AS t(letter, number);
```
这段代码展示了如何同时解开两个关联度较高的不同类型的数组集合,最终形成一张包含两列的新表——一列为字母字符,另一列为对应的数值型数据。
#### 实际应用场景举例
假设有一个存储标签及其权重信息的关系表格,其中某些记录可能携带了不止一对 (tag, weight),而是以数组形式存在;此时就可以利用 `unnest` 来简化查询逻辑,使得后续分析更加便捷高效。
```sql
CREATE TABLE tag_weights(
id SERIAL PRIMARY KEY,
tags TEXT[],
weights INTEGER[]
);
INSERT INTO tag_weights(tags,weights)
VALUES('{red,blue}', '{1,5}');
SELECT id, letter, num
FROM tag_weights tw,
LATERAL unnest(tw.tags,tw.weights) u(letter,num);
```
此脚本创建了一个简单的测试环境,并演示了怎样从复合字段中提取有用的信息片段。
阅读全文
相关推荐

















