Postgresql PotgreSQL二维数组到行
我是PostgreSQL数组的新手 我想写一个程序把数组转换成行, 并希望获得以下输出: alphabet | number ---------+---------- A | 10 B | 10 C | 6 D | 9 E | 3 from following: id | alphabet_series -------+-------------------------------------------------------------------------------------------------- 1 | {{A,10},{B,10},{C,6},{D,9},{E,3},{F,9},{I,10},{J,17},{K,16},{L,17},{M,20},{N,13},{O,19}} 字母数字 ---------+---------- A | 10 B | 10 C | 6 D|9 E | 3 从以下方面: id |字母| U系列 -------+-------------------------------------------------------------------------------------------------- |{A,10},{B,10},{C,6},{D,9},{E,3},{F,9},{I,10},{J,17},{K,16},{L,17},{M,20},{N,13},{O,19} 我搜索了array-to-rows函数,但它们似乎都接受一维数组。 但在本例中,它是二维数组 任何指点都将不胜感激Postgresql PotgreSQL二维数组到行,postgresql,Postgresql,我是PostgreSQL数组的新手 我想写一个程序把数组转换成行, 并希望获得以下输出: alphabet | number ---------+---------- A | 10 B | 10 C | 6 D | 9 E | 3 from following: id | alphabet_
非常感谢。我将创建一个包含3个字段的表: 创建表矩阵( 行字符, 上校, 价值 ) 用你的矩阵填充它 然后,您可以使用以下方法进行查询: 从矩阵组中按列逐行选择行、和(值) 或类似的 如果矩阵的大小合理(比如不是数十亿个元素),这将很好地工作
CREATE TABLE two_d (x text, y text);
CREATE OR REPLACE FUNCTION unnest_2d(anyarray)
RETURNS SETOF two_d AS
$BODY$
SELECT $1[i][1], $1[i][2] FROM
generate_series(array_lower($1,1),
array_upper($1,1)) i
$BODY$
LANGUAGE 'sql' IMMUTABLE;
SELECT * FROM unnest_2d('{{A,a},{B,b}}'::text[][]);
CREATE OR REPLACE FUNCTION unnest_2d(anyarray)
RETURNS table(col1 text, col2 text) AS
$BODY$
DECLARE
_col1 text[];
_col2 text[];
BEGIN
_col1 := $1[1:array_length($1, 1)][1:1];
_col2 := $1[1:array_length($1, 1)][2:2];
return query (SELECT * FROM unnest(_col1,_col2));
END
$BODY$ LANGUAGE plpgsql IMMUTABLE;
SELECT * FROM unnest_2d('{{A,a},{B,b}}'::text[][]);