Postgres行到二维数组



是否有任何简单的方法将postgres表转换为二维表?

我有一个数据表foobar与两列foo和bar其中有以下数据在1、23,45、6

我想把它转换成
{ 
{1,2},
{3,4},
{5,6}
}

我试过

select ARRAY[foo,bar] from foo

{1,2}
{3,4}
{5,6}

就在那里

我怀疑我将不得不写pgpsql函数来做到这一点?有什么建议吗?

我对LedgerSMB做了如下操作:

CREATE AGGREGATE compound_array (
        BASETYPE = ANYARRAY,
        STYPE = ANYARRAY,
        SFUNC = ARRAY_CAT,
        INITCOND = '{}'
);

那么你可以:

select compound_array(ARRAY[[foo,bar]]) from foobar;

注意,你需要有两对方括号,否则它只是在一个一维数组中添加它们。

create or replace function my_array()
returns integer[] as $function$
declare
    r record;
    a integer[];
begin
    for r in 
        select foo, bar
        from (values
            (1, 2), (3, 4), (5, 6)
        ) foobar (foo, bar)
    loop
        a := a || array[[r.foo, r.bar]];
    end loop;
    return a;
end;
$function$ language plpgsql;
select my_array();
      my_array       
---------------------
 {{1,2},{3,4},{5,6}}
select (my_array())[2][2];
 my_array 
----------
        4
select array_agg(ARRAY[foo,bar]) from foobar

相关内容

  • 没有找到相关文章

最新更新