postgresql 8.2.11中的Group_concat等价物

时间:2013-05-09 06:08:52

标签: sql postgresql postgresql-8.2

我使用的是Postgres 8.2.11的旧版本。对于这个Postgres 8.2.11,任何人都可以告诉我相当于MySql的group_concat。我尝试了array_accumarray_to_stringstring_agg,但在此版本中无法使用

1 个答案:

答案 0 :(得分:1)

评论中的"not quite duplicate"应指向正确的方向:create your own aggregate function。首先,您需要一个非聚合字符串连接函数,如下所示:

create function concat(t1 text, t2 text) returns text as $$
begin
    return t1 || t2;
end;
$$ language plpgsql;

然后您可以定义自己的该函数的聚合版本:

create aggregate group_concat(
    sfunc    = concat,
    basetype = text,
    stype    = text,
    initcond = ''
);

现在您可以group_concat随心所欲:

select group_concat(s)
from t
group by g

我从档案中挖出了这个,但我认为它应该适用于8.2。

请注意,不再支持8.2,因此您可能希望尽快升级到至少8.4。