función csvstring_to_recordset

From: "Haroldo Stenger" <haroldo(dot)stenger(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: función csvstring_to_recordset
Date: 2006-07-19 07:58:11
Message-ID: d33fde4e0607190058s189af78xe2abce1ad6319961@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola, chateando en #postgresql, alguien preguntó cómo convertir una
cadena de caracteres que contenía comas separadoras de campos (un
número variable) en una tabla (conjunto de registros ...) que
contuvieran cada uno el valor de un campo.

Quería pensar y resolverlo sólo con herramientas de SQL, así que
inventé esto que puede resultar útil a alguien (además de a mí, y al
que preguntó ;-) )

Tuve que lidiar con que no encontré ninguna función de postgresql que
me dijera cuántas veces se repite una sub-cadena (la coma) en una
cadena.

CREATE OR REPLACE FUNCTION csvstring_to_recordset(text)
RETURNS SETOF text AS
$BODY$
select split_part($1, ',' , x.i) from (select
generate_series(1, (length($1)-length(replace($1, ',' , '' )) ) +1)
as i) x
$BODY$
LANGUAGE 'sql' IMMUTABLE;

Acepto comentarios, críticas y sugerencias, como por ejemplo si
serviría para introducirla en algún set de funciones de contrib.

Salud

Haroldo

--

b l o g http://reenunciadosrenunciados.blogspot.com/ b l o g

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jorge Martinez 2006-07-19 13:23:42 Re: Tipos times
Previous Message Ofisercont - Informatica 2006-07-19 07:37:29 Conversion de tipos