Postgresql PotgreSQL二维数组到行

Postgresql PotgreSQL二维数组到行,postgresql,Postgresql,我是PostgreSQL数组的新手 我想写一个程序把数组转换成行, 并希望获得以下输出: alphabet | number ---------+---------- A | 10 B | 10 C | 6 D | 9 E | 3 from following: id | alphabet_

我是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函数,但它们似乎都接受一维数组。 但在本例中,它是二维数组

任何指点都将不胜感激


非常感谢。

我将创建一个包含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[][]);