2014-02-27 85 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