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
我有一个 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