Se sua versão é 8i ou superior e voce puder usar cursor, faça assim:

declare 
  Type t_cursor is Ref Cursor;
  v_cursor t_cursor;
  v_texto Varchar2(50) := '1/6/15/90/157';
  v_numero Varchar2(10);
Begin
  Open v_cursor For 'select '||Replace(v_texto,'/',' valor from dual union
select ')||' from dual';
  Loop
      Fetch v_cursor Into v_numero;
      Exit When v_cursor%Notfound;
      dbms_output.put_line(v_numero);
  End Loop;
  Close v_cursor;
end;


-----Mensagem original-----
De: [email protected] [mailto:[EMAIL PROTECTED] Em
nome de Rafael Mueller
Enviada em: quinta-feira, 16 de março de 2006 08:26
Para: [email protected]
Assunto: Re: [oracle_br] quebrar string

O problema é que a string pode ter um número variável de delimitadores.

Qual seria a melhor solução neste caso?

Grato,

-- Rafael

On 3/15/06, Marcio Portes <[EMAIL PROTECTED]> wrote:
>
> Uma  metodo seria:
>
> SQL> var x varchar2(20)
> SQL>
> SQL> exec :x := '/34/25/16/57' || '/'
>
> PL/SQL procedure successfully completed.
>
>
> X
> --------------------------------
> /34/25/16/57/
>
> SQL>
> SQL> select substr(:x, instr(:x, '/',1, 1)+1, instr(:x, '/', 1, 2) -
> (instr(:x, '/',1, 1)+1)  ) col1,
>   2         substr(:x, instr(:x, '/',1, 2)+1, instr(:x, '/', 1, 3) -
> (instr(:x, '/',1, 2)+1)  ) col2,
>   3         substr(:x, instr(:x, '/',1, 3)+1, instr(:x, '/', 1, 4) -
> (instr(:x, '/',1, 3)+1)  ) col3,
>   4         substr(:x, instr(:x, '/',1, 4)+1, instr(:x, '/', 1, 5) -
> (instr(:x, '/',1, 4)+1)  ) col4
>   5    from dual
>   6  /
>
> COL1                             COL2
> COL3                             COL4
> -------------------------------- --------------------------------
> -------------------------------- ---------------
> 34                               25
> 16                               57
>
> 1 row selected.
>
>
> On 3/15/06, Rafael Mueller <[EMAIL PROTECTED]> wrote:
> >
> > Olá,
> >
> > possuo uma string que é uma sequencia de códigos,
> > gerada por um sys_connect_by_path numa consulta hierarquica, por
> exemplo:
> > "/34/25/16/57"
> >
> > Gostaria de saber se há alguma maneira de eu ter essa string como
> entrada
> > e na saída elas forem separadas em (4 neste exemplo) colunas.
> >
> > col1 | col2 | col3 | col4
> > -------|--------|--------|--------
> > 34   |  25   |  16  |  57
> >
> >
> > Grato,
> >
> > -- Rafael
> >
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
> >
> >
> >
>
----------------------------------------------------------------------------
----------------------------------------------
> > Atenção! As mensagens deste grupo são de acesso público e de inteira
> > responsabilidade de seus remetentes.
> > Acesse: http://www.mail-archive.com/[email protected]/
> >
> >
>
----------------------------------------------------------------------------
----------------------------------------------______________________________
____________________________________
> >
> > Este Grupo recebe o apoio da SQL Magazine -
> > www.devmedia.com.br/sqlmagazine
> > __________________________________________________________________
> >
> > Links do Yahoo! Grupos
> >
> >
> >
> >
> >
> >
> >
> >
>
>
> --
> Marcio Portes
> Material Tecnico em Portugues - http://mportes.blogspot.com
> Practical Learning Oracle     -
> http://mportes.blogspot.com/2006/02/practical-learning-oracle.html
>
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
>
>
>
----------------------------------------------------------------------------
----------------------------------------------
> Atenção! As mensagens deste grupo são de acesso público e de inteira
> responsabilidade de seus remetentes.
> Acesse: http://www.mail-archive.com/[email protected]/
>
>
----------------------------------------------------------------------------
----------------------------------------------______________________________
____________________________________
>
> Este Grupo recebe o apoio da SQL Magazine -
> www.devmedia.com.br/sqlmagazine
> __________________________________________________________________
>
> Links do Yahoo! Grupos
>
>
>
>
>
>
>
>


[As partes desta mensagem que não continham texto foram removidas]



----------------------------------------------------------------------------
----------------------------------------------
Atenção! As mensagens deste grupo são de acesso público e de inteira
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/[email protected]/ 
----------------------------------------------------------------------------
----------------------------------------------______________________________
____________________________________

Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine 
__________________________________________________________________
 
Links do Yahoo! Grupos




 






--------------------------------------------------------------------------------------------------------------------------
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/[email protected]/ 
--------------------------------------------------------------------------------------------------------------------------__________________________________________________________________

Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine 
__________________________________________________________________
 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/oracle_br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 


Responder a