有什么办法可以找到数组的大小吗?
例如,
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%使用都是一维的)