有什么办法可以找到数组的大小吗?
例如,
CREATE TABLE example (id integer[]) ;
INSERT INTO exam VALUES ( '{}');
INSERT INTO exam VALUES ( '{5,6,7}');
由此,是否有可能获得以下结果,
size
0
3
Answers:
正如vyegorov所言,array_length
将完成任务。或者,如果您知道数组是一维的(可能的话)并且正在运行PostgreSQL 9.4或更高版本,则可以使用cardinality
:
SELECT cardinality(id) FROM example;
cardinality
返回一个或多维数组中所有元素的数量。所以select cardinality(ARRAY[[1,2], [3,4]]);
会回来4
,而select array_length(ARRAY[[1,2], [3,4]], 1)
会回来2
。如果您要计算第一个维度,那array_length
是一个比较安全的选择。
text
类型为while function array_length(text[]) does not exist
;)的字段中的数组
null
,而不是0
,而cardinality
回报你的期望。不知道他们在用这种逻辑思考什么。
阅读文档很简单:
SELECT array_length(id, 1) FROM example;
array_length
。在文档中找不到该信息。
null
和3
替代0
和3
对有机磷农药的例子。绝对应该cardinality
在接受答案时促进使用,因为它更易于使用且不太意外(我想数组的99.999%使用都是一维的)