Re: length of array - Mailing list pgsql-sql

From Joe Conway
Subject Re: length of array
Date
Msg-id 3F4D4F71.1030706@joeconway.com
Whole thread Raw
In response to length of array  ("Chris Faulkner" <chrisf@oramap.com>)
Responses Re: length of array
List pgsql-sql
Chris Faulkner wrote:
> Is there a function in postgres to return the length of an array field ? I
> have seen array_dims(array) but this returns a character value. Ideally, I'd
> like something numeric returned.
> 

Afraid not in 7.3.x or earlier. In 7.3.x (but not earlier) you *can* do 
this (for a one-dimensional array at least):

SELECT  replace(split_part(array_dims(array_fld),':',1),'[','')::int  as low
FROM tbl;

SELECT  replace(split_part(array_dims(array_fld),':',2),']','')::int  as high
FROM tbl;


In 7.4 (now in beta) there are two new functions, array_lower() and 
array_upper() that do what you're looking for:

regression=# select array_lower(array_fld, 1) from tbl; array_lower
-------------           1
(1 row)

regression=# select array_upper(array_fld, 1) from tbl; array_upper
-------------           2
(1 row)

See the following links for more on 7.4's array support:
http://developer.postgresql.org/docs/postgres/arrays.html
http://developer.postgresql.org/docs/postgres/functions-array.html
http://developer.postgresql.org/docs/postgres/sql-expressions.html#SQL-SYNTAX-ARRAY-CONSTRUCTORS

HTH,

Joe





pgsql-sql by date:

Previous
From: Stephan Szabo
Date:
Subject: Re: How to optimize this query ?
Next
From: "scott.marlowe"
Date:
Subject: Re: Canceling other backend's query