UNNEST
功能描述
UNNEST函数将一个数组扩展为一组行。
在PostgreSQL兼容模式下,数组函数UNNEST用作表函数时支持识别任意数量的数组参数,为每一个输入的数组返回一行数据,并输出它们的集合。
表函数(Table Function)针对每个输入行返回一个数据行的集合,即一个二维表。返回的数据集合可能为空,可能包含一行或者多行数据,每行数据包含一个或者多个列。表函数用在from子句中生成并显示结构化的记录。
注意事项
- 该功能仅在数据库兼容模式为PostgreSQL时支持(即数据库实例初始化时指定DBCOMPATIBILITY='PG')。
- 当UNNEST函数接收多个anyarray作为入参时,仅在简单查询(Simple Query)下有效,不在扩展查询(Extended Query)下支持,并且,作为参数的anyarray不能通过函数进行嵌套。
语法格式
UNNEST( anyarray [, ... ] ) [ [ AS ] table_alias [ ( column_alias [ , ... ] ) ] ]
参数说明
anyarray
数组表达式。
table_alias
查询返回的表别名。
如果查询没有指定table_alias,函数名UNNEST将被用作表名。在ROWS FROM()结构的情况中,会使用第一个函数名。
column_alias
列别名。如果没有指定列别名,那么对于一个返回基数据类型的函数,列名也与该函数名相同。对于一个返回组合类型的函数,结果列会从该类型的属性得到名称。
示例
在简单查询中使用UNNEST表函数。
在FROM子句中使用UNNEST函数,并输入多个数组。
select * from UNNEST(array[1,3,5,7],array[2,4,6,8]);
返回结果如下:
unnest | unnest -------+-------- 1 | 2 3 | 4 5 | 6 7 | 8 (4 rows)
在FROM子句中使用UNNEST函数,输入多个数组并为表指定一个临时表别名。
select * from UNNEST(array[1,3,5,7],array[2,4,6,8]) as b;
返回结果如下:
unnest | unnest -------+-------- 1 | 2 3 | 4 5 | 6 7 | 8 (4 rows)
在FROM子句中使用UNNEST函数,输入多个数组并为表指定临时表别名、列别名。
select * from UNNEST(array[1,3,5,7],array[2,4,6,8]) as b(b1,b2);
返回结果如下:
b1 | b2 -------+-------- 1 | 2 3 | 4 5 | 6 7 | 8 (4 rows)