Muito Obrigado Marcus.....és muito fixe


Com os melhores cumprimentos, 
Carlos Pinto

-----Mensagem original-----
De: oracle_br@yahoogrupos.com.br [mailto:oracle...@yahoogrupos.com.br] Em
nome de Marcos Braga
Enviada: quarta-feira, 18 de Agosto de 2010 21:09
Para: oracle_br@yahoogrupos.com.br
Assunto: Re: [oracle_br] Uma ajudinha!!!

Oi Carlos,

Esse regexp que passei para ti é mais ou menos assim:

1. Primeiro vamos pegar o comando completo:
SQL> select regexp_replace(c1, '^.*#(.*)$', '\1') c1 from t1;

2. Entendendo a função:
regexp_replace(COLUNA, 'BUSCA', 'SUBSTITUIÇÃO')
regexp_replace(c1, '^.*#(.*)$', '\1')

3. Entendendo a busca:
*^.*#(.*)$*  = string completa
*^*    = indica o início do registro
*.*    = indica qualquer caracter (letra ou número ou caracter especial)
***    = indica qualquer quantidade de registro anterior (no nosso caso: "."
- qualquer coisa)
*# *   = literal, significa isso mesmo: um "#"
*(.*)* = observe essa junção - adicionei ".*" dentro de parênteses
       aqui acabo de criar o grupo 1 (depois utilizarei como "\1")
*$*    = indica o fim do registro

*Carlos, a mágica toda está aqui, é sempre bom entender um pouco de
expressão regular para não ficar muito perdido, mas observe o que fiz: o
registro inicia (^) com qualquer quantidade de caracter (.*) até uma
cerquilha (#  -  não especifiquei a posição dessa cerquilha no registro,
pode estar em qualquer lugar, no início, no meio ou no fim) e após a
cerquilha crio um grupo ( (.*) ) que finaliza o registro ($). E utilizo
somente esse grupo na substituição.*

4. Entendendo a substituição:
*\1*   =  utilizando o grupo criado anteriormente na busca


Bom..., no começo as coisas ficam meio obscuras, mas segue alguns exemplos e
documentação para lhe ajudar a esclarecer o regexp, e quanto mais utilizar,
mais verá utilidade para o regexp.

http://www.oracle.com/technology/obe/obe10gdb/develop/regexp/regexp.htm

http://profissionaloracle.com.br/blogs/braga/category/regexp/

E as dúvidas, posta na lista para auxiliá-lo.

[]s
Braga



2010/8/18 Carlos Pinto <carlos.pin...@yahoo.com.br>

>
>
> Funcionou muito bem.
>
> Marcos podes explicar-me a construcao regexp_replace?
>
>
> Com os melhores cumprimentos,
> Carlos Pinto
>
> -----Mensagem original-----
> De: oracle_br@yahoogrupos.com.br <oracle_br%40yahoogrupos.com.br> [mailto:
> oracle_br@yahoogrupos.com.br <oracle_br%40yahoogrupos.com.br>] Em
> nome de Marcos Braga
> Enviada: quarta-feira, 18 de Agosto de 2010 17:37
>
> Para: oracle_br@yahoogrupos.com.br <oracle_br%40yahoogrupos.com.br>
> Assunto: Re: [oracle_br] Uma ajudinha!!!
>
> Olá Carlos,
>
> Observe o exemplo e veja se a solução ajuda.
>
> ----------------------------------------------------------
> SQL> create table t1 (c1 varchar2(40));
>
> Tabela criada.
>
> SQL> insert into t1 values ('22/07/2010#04121170700153051#E24');
>
> 1 linha criada.
>
> SQL> insert into t1 values ('25/07/2010#04121170700153055#D24569');
>
> 1 linha criada.
>
> SQL> insert into t1 values ('28/07/2010#04121170700153049#E2449');
>
> 1 linha criada.
>
> SQL> commit;
>
> Commit concluido.
>
> SQL> select regexp_replace(c1, '^.*#(.*)$', '\1') c1 from t1;
>
> C1
> ----------------------------------------------------------
> E24
> D24569
> E2449
>
> 3 linhas selecionadas.
> ----------------------------------------------------------
>
> []s
> Braga
>
> 2010/8/18 Carlos Pinto
<carlos.pin...@yahoo.com.br<carlos.pintoo%40yahoo.com.br>
> >
>
> >
> >
> > Ola a todos, alguém me pode ajudar!!!!
> >
> > Tenho em campo VARCHAR2 (40) e o que precisava era “sacar” os últimos
> > caracteres até ao #.
> >
> > 22/07/2010#04121170700153051#E24
> >
> > 25/07/2010#04121170700153055#D24569
> >
> > 28/07/2010#04121170700153049#E2449
> >
> > Precisava destes caracteres – Exemplo:
> >
> > E24
> >
> > D24569
> >
> > E2449
> >
> > Como posso fazer isto em SQL?
> >
> > Desculpem Oracle 10G
> >
> > Com os melhores cumprimentos,
> >
> > Carlos Pinto
>


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



------------------------------------

----------------------------------------------------------------------------
----------------------------------------------
>Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
----------------------------------------------------------------------------
----------------------------------------------
>Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure
» Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE:
http://www.oraclebr.com.br/  
----------------------------------------------------------------------------
-------------------------------------------- Links do Yahoo! Grupos



Responder a