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