如何从select语句创建数组?

时间:2015-10-15 21:43:01

标签: postgresql postgresql-9.4

这看起来很容易,但我无法正确格式化。我有这样的行:

alias  # is character varying(20) column-type
------
Bob2
Judy5
Jane6
Erica7

我想将所有这些行聚合成一个数组:

[Bob2, Judy5, Jane6, Erica7]

我似乎只能得到:

{(Bob2), (Judy5), (Jane6), (Erica7)}

SELECT array_agg(r) FROM (
  SELECT name FROM mytable
  ) r

我怎样才能达到我想要的格式?

2 个答案:

答案 0 :(得分:1)

您正在聚合而不是列(因为查询中的r是指派生表,而不是列。)您所需要做的就是:

select array_agg(name) 
from my_table;

或者如果你坚持使用派生表:

SELECT array_agg(r.name) 
FROM (
  SELECT name 
  FROM mytable
) r

答案 1 :(得分:0)

你可以试试这个:

create table test(alias varchar(20));
insert into test values ('Bob2'), ('Judy5'), ('Jane6'), ('Erica7');
select replace(replace(array_agg(alias)::varchar, '{', '['), '}', ']') from test

Result:
[Bob2,Judy5,Jane6,Erica7]