/*
Desculpa, não fui claro ...
Vamos por partes... dividindo o moido abaixo ...
*/
--1. A função generate_series gera uma sequencia funciona da seguinte forma: [1]

--Exemplo: (gerando um listagem com 10 linhas...)
SELECT * FROM generate_series(1,10);
/*
--resultado
generate_series
---------------
          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
(10 rows)
*/

--2. A função string_to_array, transforma uma string em array   [2]

--Exemplo: (transformando uma string em um array de string, usando
como critério as ',' virgulas na string, para geração do array )
 SELECT *
   FROM string_to_array('1,2,3,4',','); --{1,2,3,4}
/*resultado
 string_to_array
-----------------
 {1,2,3,4}
(1 row)
*/

--3. A função array_upper, dá a dimensão, o tamanho do array [2]

--Exemplo: (obtendo o tamanho do array)
SELECT array_upper(string_to_array('{1,2,3,4}',','),1);  --4
/*
--resultado
 array_upper
-------------
           4
(1 row)
*/

--4. A combinacao disso fica assim:

--Exemplo: o resultado desta consulta irá retornar duas colunas uma do
tipo array de string e uma do tipo integer (indice do array), as
seguintes colunas são:
-- id(text[]), i(integer)
     SELECT *
       FROM
          (
             SELECT *
               FROM string_to_array('1,2,3,4',',')  AS id
          ) AS z,
          generate_series(
1,array_upper(string_to_array('1,2,3,4',','),1)) AS i;
/*
--resultado
    id     | i
-----------+---
 {1,2,3,4} | 1
 {1,2,3,4} | 2
 {1,2,3,4} | 3
 {1,2,3,4} | 4
(4 rows)
*/

--5. Tratando a query do item 4 fica dessa forma, que foi a
transformação de vários ids em formato linha texto para formato coluna
inteiros.

--Exemplo: o resultado obtido para uso no IN se for o caso
     SELECT z.id[i]::integer
       FROM
          (
             SELECT *
               FROM string_to_array('1,2,3,4',',')  AS id
          ) AS z,
          generate_series(
1,array_upper(string_to_array('1,2,3,4',','),1)) AS i;
/*
--resultado
 id
----
  1
  2
  3
  4
(4 rows)
*/

/*
[1]http://www.postgresql.org/docs/9.0/static/functions-srf.html
[2]http://www.postgresql.org/docs/9.0/static/functions-array.html


Cordialmente

Emerson Hermann

*/


Em 23 de dezembro de 2010 11:06, Beto Lima <[email protected]> escreveu:
> nossa Emerson , não entendi nada mas valeu pela ajuda.
> vou ter que ler isso umas 50 vezes pra sacar hehe
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a