Thread: Passing a comma delimited list to a function

Passing a comma delimited list to a function

From
A E
Date:
Hi,
 
I was wondering if there was a function that handles list elements of a comma delimited list? I need to be able to pass values as a comma delimited list, count the number of values, and process the value of each.
 
Did not think it was very efficient to loop through the contents of the list finding delimiters.
 
TIA
Alex

Re: Passing a comma delimited list to a function

From
Joe Conway
Date:
A E wrote:
> I was wondering if there was a function that handles list elements of
> a comma delimited list? I need to be able to pass values as a comma
> delimited list, count the number of values, and process the value of
> each.

You didn't mention a version, but in 7.4 you can do this:

create or replace function unravel(text) returns setof int as '
declare
  v_list alias for $1;
  v_delim text := '','';
  v_arr text[];
begin
  v_arr := string_to_array(v_list, v_delim);
  for i in array_lower(v_arr, 1)..array_upper(v_arr, 1) loop
    return next v_arr[i]::int;
  end loop;
  return;
end;
' language plpgsql;

regression=# select * from unravel('1,2,3,4,5');
  unravel
---------
        1
        2
        3
        4
        5
(5 rows)

HTH,

Joe



Re: Passing a comma delimited list to a function

From
"Ezra Epstein"
Date:
Take a look at:
   http://www.postgres.org/docs/current/static/functions-string.html

The split_part() function should do the trick.

== Ezra Epstein

"A E" <cooljoint@yahoo.com> wrote in message
news:20040103181155.67492.qmail@web12103.mail.yahoo.com...
Hi,

I was wondering if there was a function that handles list elements of a
comma delimited list? I need to be able to pass values as a comma delimited
list, count the number of values, and process the value of each.

Did not think it was very efficient to loop through the contents of the list
finding delimiters.

TIA
Alex