Cool PL/PgSQL hack :)

From: David Fetter <david(at)fetter(dot)org>
To: SF Postgres <sfpug(at)postgresql(dot)org>
Subject: Cool PL/PgSQL hack :)
Date: 2003-05-29 21:59:47
Message-ID: 20030529215947.GA17648@fetter.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: sfpug

Kind people,

Here's a little hack I put together that looks a lot like Perl's
join() operator. Comments, suggestions for improvement, and sources
for old-school pizzelle irons are all welcome :)

Cheers,
D

CREATE OR REPLACE FUNCTION string_join(VARCHAR, VARCHAR[])
RETURNS VARCHAR AS '
DECLARE
joiner ALIAS FOR $1;
my_array ALIAS FOR $2;
dimstring TEXT;
joined_stuff TEXT;
counter INTEGER;
the_start INTEGER;
the_end INTEGER;
BEGIN
SELECT INTO dimstring array_dims(my_array);
the_start := ltrim(split_part(dimstring, '':'', 1), ''['')::INTEGER;
the_end := rtrim(split_part(dimstring, '':'', 2), '']'')::INTEGER;
FOR counter IN the_start .. the_end LOOP
IF counter = 1
THEN
joined_stuff := my_array[counter];
ELSE
joined_stuff := joined_stuff || joiner || my_array[counter];
END IF;
END LOOP;
RETURN (joined_stuff);
END;
' LANGUAGE 'plpgsql';

--
David Fetter david(at)fetter(dot)org http://fetter.org/
phone: +1 510 893 6100 cell: +1 415 235 3778

Responses

Browse sfpug by date

  From Date Subject
Next Message Stephan Szabo 2003-05-29 22:06:00 Re: Next Meeting Set ... June 25th
Previous Message Josh Berkus 2003-05-29 21:24:09 Re: Next Meeting Set ... June 25th