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
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 |