Passing a comma delimited list to a function

Started by A Eover 22 years ago3 messagesgeneral
Jump to latest
#1A E
cooljoint@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

#2Joe Conway
mail@joeconway.com
In reply to: A E (#1)
Re: Passing a comma delimited list to a function

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

#3Ezra Epstein
news-reader@prajnait.com
In reply to: A E (#1)
Re: Passing a comma delimited list to a function

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