在 postgres 中查找数组长度

Posted

技术标签:

【中文标题】在 postgres 中查找数组长度【英文标题】:Finding array length in postgres 【发布时间】:2014-02-27 20:02:31 【问题描述】:

我尝试了array_upper(array(Value))array_upper((Value):array[]),但遇到了语法错误。

Value : 数据类型是 int []; 我期待结果如下表:

 Pname  week_date      Value    array_length
    5773    6/8/2013    29            1
    5773    3/30/2013   27            1
    5773    3/16/2013   138,3,4       3
    5773    3/9/2013    37,8          2
    5773    1/19/2013   66            1
    5773    1/5/2013    49,50,50,56   4

但这很好用

select array_upper(array[1,2,3,6], 1)

我需要使用值列并找出该值数组的长度

postgres 版本:8.2

【问题讨论】:

8.2 已过时。您需要升级。 我不能,因为我使用的是青梅,默认情况下它在 8.2 postgres 上运行。 【参考方案1】:

应该可以的:

select array_upper ( value, 1 ) from table_name_here;

注意:'VALUE'是SQL中的保留关键字,所以不建议使用它作为列名。见:http://www.postgresql.org/docs/current/static/sql-keywords-appendix.html

【讨论】:

不,它不起作用,它会引发错误:函数 array_upper(integer[]) 不存在 @user2569524:PostgreSQL 8.2 有 array_upper(anyarray,int) 所以它应该可以工作。您的错误消息表明您正在尝试使用array_upper(value) 而不是array_upper(value, 1)

以上是关于在 postgres 中查找数组长度的主要内容,如果未能解决你的问题,请参考以下文章

在 vue.js 中查找数组长度时无法读取未定义的属性“长度”

查找在数组出现次数超过一半的数字

查找具有给定排名的所有固定长度子数组

尝试查找空数组的长度,但数组包含多个文件名

这是查找动态分配数组长度的好方法吗?

如何从一个数组中查找指定的元素,并返回这个元素在数组中的位置