VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

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)