如何在postgresql中查找数组的大小

问题描述 投票:0回答:4

有什么方法可以找到数组的大小吗?

例如,

CREATE TABLE example (id integer[]) ;

INSERT INTO example VALUES ( '{}');

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

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

size
---
0
3
sql arrays postgresql size
4个回答
259
投票

正如 vyegorov 提到的,

array_length
就可以了。 或者,如果您知道该数组是一维的(这很可能)并且正在运行 PostgreSQL 9.4 或更高版本,则可以使用
cardinality
:

SELECT cardinality(id) FROM example;

121
投票

这是微不足道的阅读文档

SELECT array_length(id, 1) FROM example;

23
投票

假设数组的维数始终为 1 我觉得不太舒服,所以我采用了以下方法:

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

已经……至少十年了,但我们曾经用

coalesce
做了很多事情,而且非常方便。也许我是出于舒适才伸手去拿它?


8
投票

必须在 postgres 8.2 中使用 array_upper。

© www.soinside.com 2019 - 2024. All rights reserved.