RE: [oracle_br] Uma ajudinha!!!
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 > > > 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 [mailto: > oracle_br@yahoogrupos.com.br ] Em > nome de Marcos Braga > Enviada: quarta-feira, 18 de Agosto de 2010 17:37 > > Para: oracle_br@yahoogrupos.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 > > > > > > > > > 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
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 > > > 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 [mailto: > oracle_br@yahoogrupos.com.br ] Em > nome de Marcos Braga > Enviada: quarta-feira, 18 de Agosto de 2010 17:37 > > Para: oracle_br@yahoogrupos.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 > > > > > > > > > > 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 <*> 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: oracle_br-unsubscr...@yahoogrupos.com.br <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
RE: [oracle_br] Uma ajudinha!!!
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 [mailto:oracle...@yahoogrupos.com.br] Em nome de Marcos Braga Enviada: quarta-feira, 18 de Agosto de 2010 17:37 Para: oracle_br@yahoogrupos.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 > > > 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
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 > > > 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 <*> 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: oracle_br-unsubscr...@yahoogrupos.com.br <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
RE: [oracle_br] Uma ajudinha!!!
Valeu Eduardo…é isto mesmo Com os melhores cumprimentos, Carlos Pinto De: oracle_br@yahoogrupos.com.br [mailto:oracle...@yahoogrupos.com.br] Em nome de Eduardo Schurtz Enviada: quarta-feira, 18 de Agosto de 2010 17:00 Para: oracle_br@yahoogrupos.com.br Assunto: Re: [oracle_br] Uma ajudinha!!! select substr('teste#123', instr('teste#123', '#', -1) + 1) from dual Att, __ *Eduardo Schurtz* Oracle E-Business Consultant ✉ eduardo.schu...@gmail.com <mailto:eduardo.schurtz%40gmail.com> [image: LinkedIn] <http://br.linkedin.com/in/eduardoschurtz>[image: Twitter]<http://twitter.com/eduardo_oracle> 2010/8/18 Carlos Pinto mailto: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] > > > [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]