UNNEST (Lakehouse v1)
展开数组并返回元素集合。
Analyze 语法
Section titled “Analyze 语法”func.unnest( <array> )Analyze 示例
Section titled “Analyze 示例”func.unnest([1, 2])
┌──────────────────────┐│ func.unnest([1, 2]) │├──────────────────────┤│ 1 ││ 2 │└──────────────────────┘SQL 语法
Section titled “SQL 语法”UNNEST( <array> )SQL 示例
Section titled “SQL 示例”SELECT UNNEST([1, 2]);
┌─────────────────┐│ unnest([1, 2]) │├─────────────────┤│ 1 ││ 2 │└─────────────────┘
-- UNNEST(array) can be used as a table function.SELECT * FROM UNNEST([1, 2]);
┌─────────────────┐│ value │├─────────────────┤│ 1 ││ 2 │└─────────────────┘在下面的示例中,将使用名为 contacts 的表,其 phones 列定义为文本数组。
CREATE TABLE contacts ( id SERIAL PRIMARY KEY, name VARCHAR (100), phones TEXT []);phones 列是一个一维数组,保存联系人可能拥有的各种电话号码。
要定义多维数组,请添加方括号。
例如,可以按如下方式定义二维数组:
column_name data_type [][]向该表插入数据的示例
INSERT INTO contacts (name, phones)VALUES('John Doe',ARRAY [ '(408)-589-5846','(408)-589-5555' ]);或
INSERT INTO contacts (name, phones)VALUES('Lily Bush','{"(408)-589-5841"}'), ('William Gate','{"(408)-589-5842","(408)-589-5843"}');unnest() 函数会将数组展开为多行。例如,下面的查询会展开 phones 数组中的所有电话号码。
SELECT name, unnest(phones)FROM contacts;输出:
| name | unnest |
|---|---|
| John Doe | (408)-589-5846 |
| John Doe | (408)-589-5555 |
| Lily Bush | (408)-589-5841 |
| William Gate | (408)-589-5843 |