| From: | Oswaldo Hernández <listas(at)soft-com(dot)es> | 
|---|---|
| To: | Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org> | 
| Cc: | pgsql-es-ayuda(at)postgresql(dot)org | 
| Subject: | Re: select from lista de valores | 
| Date: | 2010-02-03 17:39:36 | 
| Message-ID: | 4B69B4D8.9090306@soft-com.es | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-es-ayuda | 
Alvaro Herrera escribió:
> Oswaldo Hernández escribió:
> 
>> Acabo de ver que en 8.4 existe la funcion 'unnest(array[])' que hace
>> exactamente eso, separar los valores de un array en filas.
>>
>> Desgraciadamente todavía ando con 8.3 :(
> 
> En 8.3 puedes escribir una función unnest fácilmente en plpgsql.  Es
> algo así como
> 
> select $1[i] from generate_series(array_lower($1, 1), array_upper($1, 1)) i;
> 
Como afinas Alvaro!
La función que envié antes quedaría entonces así:
CREATE OR REPLACE FUNCTION public.unnest(IN a anyarray, OUT v 
anyelement)  RETURNS SETOF anyelement AS
$BODY$
/******************************************
emulacion de funcion unnest(array[]) de 8.4
para utilizar en versiones inferiores
*******************************************/
select $1[i] from generate_series(array_lower($1, 1), array_upper($1, 1)) i;
$BODY$
   LANGUAGE 'sql' VOLATILE;
ALTER FUNCTION public.unnest(anyarray) OWNER TO postgres;
-- 
*****************************************
Oswaldo Hernández
oswaldo (@) soft-com (.) es
*****************************************
PD:
Antes de imprimir este mensaje, asegúrese de que es necesario.
El medio ambiente está en nuestra mano.
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Emanuel Calvo Franco | 2010-02-03 18:22:14 | Re: select from lista de valores | 
| Previous Message | Xavier Guerra | 2010-02-03 17:04:42 | Re: Ayuda con Select |