On Wed, 2005-21-09 at 07:48 -0700, Tony Wasson wrote: > On 9/20/05, Matthew Peter <survivedsushi@xxxxxxxxx> wrote: > > Wondering if there's a way for postgres to return how > > many elements are in a array as a single integer? For > > instance, returning 10 (items in array) instead of > > [-5:4] > > > > Also, is there a way to return the position of an item > > in a array? > > > > Try using array_upper and specify which array dimension. > > from http://www.postgresql.org/docs/current/static/arrays.htm: > > "array_dims produces a text result, which is convenient for people to > read but perhaps not so convenient for programs. Dimensions can also > be retrieved with array_upper and array_lower, which return the upper > and lower bound of a specified array dimension, respectively." > > > pg8=# SELECT array_dims('{4,2,3,5,6}'::INT[]); > array_dims > ------------ > [1:5] > (1 row) > > pg8=# SELECT array_upper('{4,2,3,5,6}'::INT[],1); > array_upper > ------------- > 5 > So to answer his question he would likely want : SELECT array_upper(item,1) - array_upper(item,0) + 1 as elements FROM arraytest ; ---------------------------(end of broadcast)--------------------------- TIP 5: don't forget to increase your free space map settings