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




---------------------------(end of broadcast)--------------------------- TIP 6: Have you searched our list archives?

http://archives.postgresql.org

Reply via email to