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