2014-02-27 59 views
1

我试过array_upper(array(Value))array_upper((Value):array[]),但出现语法错误。在postgres中查找数组长度

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

+2

8.2过去了。你需要升级。 –

+0

我不能像我使用绿色梅花,它默认运行在8.2 postgres上。 – user2569524

回答

4

这应该工作:

select array_upper (value, 1) from table_name_here; 

注意:'VALUE'是SQL中的保留关键字,因此不建议将其用作列名。参见:http://www.postgresql.org/docs/current/static/sql-keywords-appendix.html

+0

不,它不工作它会抛出一个错误:function array_upper(integer [])does not exist – user2569524

+2

@ user2569524:PostgreSQL 8.2 has [array_upper(anyarray,int)'](http://www.postgresql.org/docs/ 8.2/interactive/functions-array.html#ARRAY-FUNCTIONS-TABLE),所以它应该可以工作。您的错误消息表明您正在尝试使用'array_upper(value)'而不是'array_upper(value,1)'。 –

+0

对不起,它工作。错过了维度:)。 – user2569524