有没有办法找到数组的大小?
例如,
CREATE TABLE example (id integer[]) ;
INSERT INTO exam VALUES ( '{}');
INSERT INTO exam VALUES ( '{5,6,7}');
由此可以获得如下结果,
size
0
3
答案 0 :(得分:60)
这是微不足道的reading docs:
SELECT array_length(id, 1) FROM example;
答案 1 :(得分:60)
正如vyegorov所说,array_length
会做到这一点。或者,如果您知道该数组是1维(可能是)并且正在运行PostgreSQL 9.4或更高版本,则可以使用cardinality
:
SELECT cardinality(id) FROM example;
答案 2 :(得分:1)
在postgres 8.2中必须使用array_upper。
答案 3 :(得分:1)
假设数组的维数始终为1,这让我感到不舒服,所以我选择了以下方法:
SELECT coalesce(array_length(id, 1), 0) as size FROM example;
已经过去了……至少十年了,但是我们曾经使用coalesce
做过很多事情,而且非常方便。也许我是出于安慰而来的?