126

有没有办法找到数组的大小?

例如,

CREATE TABLE example (id integer[]) ;

INSERT INTO exam VALUES ( '{}');

INSERT INTO exam VALUES ( '{5,6,7}');

由此,是否有可能得到如下结果,

size

0

3
4

4 回答 4

168

正如vyegorov所提到的,array_length会成功的。或者,如果您知道数组是一维的(很可能)并且正在运行 PostgreSQL 9.4 或更高版本,您可以使用cardinality

SELECT cardinality(id) FROM example;
于 2015-05-09T11:46:26.813 回答
95

阅读文档很简单:

SELECT array_length(id, 1) FROM example;
于 2012-06-25T12:15:33.403 回答
16

假设数组的维度总是 1 不是我觉得舒服的东西,所以我选择了以下内容:

SELECT coalesce(array_length(id, 1), 0) as size FROM example;

已经……至少十年了,但我们曾经做过很多事情,coalesce而且非常方便。也许我是出于舒适而伸手去拿它?

于 2019-06-12T16:30:06.907 回答
6

不得不在 postgres 8.2 中使用 array_upper。

于 2018-09-24T12:11:10.220 回答