2012-09-13 45 views
6

使用array_agg或array_string时,数组返回空值大于特定大小。Postgresql 9.1中array_agg的限制

SELECT array_agg(x.id) FROM (SELECT id FROM table LIMIT 500) x - 这个工作并返回一个数组。

但此查询:SELECT array_agg(x.id) FROM (SELECT id FROM table LIMIT 667) x 不起作用。它返回一个空数组。

我很确定这没有达到数组的限制大小。任何想法为什么会发生?

+1

'id'可以为空吗? –

+1

@a_horse_with_no_name no。尝试'SELECT array_agg(x.id) FROM(SELECT * FROM cast(generate_series(1,1158)as int)as id)x' – Ereli

+3

我发现了什么问题。限制在显示环境中。 'pgAdmin III'不会在UI中显示数据,但它在那里。 – Ereli

回答

6

这里的问题不是Postgresql,而是我正在使用的客户端。 pgAdmin III不显示超过一定大小的数组内容。约4.5k。 使用psql时,不会遇到同样的问题。

pgAdmin的UI有一个设置"Max characters per column"的选项,在我的情况下它被设置为256,这没有什么意义。 但您复制&将看起来空的数组粘贴到记事本中,您会发现所有数据都在那里。

+0

好的obersvation – vol7ron