SQL - 将数组列扩展为元素列

SQL - Expand column of arrays into column of elements

我有一个 SQL table,table 的一列的类型为文本 []。我想创建一个查询,该查询将创建一个新的 table,它由所有展平和连接的数组组成。例如:如果 table 中有 3 个项目,并且每个项目的数组条目是 [1, 2, 3],NULL,[1, 4, 5],我希望结果集是[1, 2, 3, 1, 4, 5].

UNNEST 似乎在这里很有用。但是,我找不到将函数应用于 table 中每个数组的方法。本质上,我想将此函数“映射”到 table 中的每一行。谁能给我指出一个好的方向?

CREATE TABLE arrs (
  col1 int,
  col2 text[]
);


INSERT INTO arrs (col1, col2) VALUES (1, '{"a", "b", "c"}');
INSERT INTO arrs (col1, col2) VALUES (2, '{"d", "e"}');

我希望查询 return a table 有 5 行,上面的文本值为“a”、“b”、“c”、“d”、“e” table.

对测试有用的 REPL:https://replit.com/languages/sqlite

谢谢!

将table中的所有数组展开(withUNNEST)放入一个公共数组(withARRAY_AGG):

with t as (select unnest(col2) as elems
from arrs)
select array_agg(t.elems)
from t;

这里还有dbfiddle