Se não for 10g, à moda antiga: declare l_nome_completo varchar2(200) := 'Paulo José Farias Neto'; l_nome varchar2(100); l_nome_meio varchar2(100); l_sobrenome varchar2(100); -- begin l_nome := substr(l_nome_completo, 1, instr(l_nome_completo, ' ') - 1); l_nome_meio := substr(l_nome_completo, instr(l_nome_completo, ' ') + 1, (instr(l_nome_completo, ' ', -1) - instr(l_nome_completo, ' ')) - 1); l_sobrenome := substr(l_nome_completo, instr(l_nome_completo, ' ', -1) + 1); -- dbms_output.put_line('Nome: ' || l_nome); dbms_output.put_line('Nome: ' || l_nome_meio); dbms_output.put_line('Nome: ' || l_sobrenome); end;
Abs __________________________ *Eduardo Schurtz* Oracle E-Business Consultant ✉ eduardo.schu...@gmail.com [image: LinkedIn] <http://br.linkedin.com/in/eduardoschurtz>[image: Twitter]<http://twitter.com/eduardo_oracle> 2010/8/16 Marcus Pavan <marcus_...@yahoo.com.br> > > > Leandro, boa tarde. > > Você conseguirá fazer isto via Regular Expression (Oracle 10g ou superior). > > SELECT REGEXP_SUBSTR('JOSE ANTONIO DA SILVA JR.', '^[A-Z]+') AS first_name > ,REGEXP_SUBSTR('JOSE ANTONIO DA SILVA JR.', ' {1,}[A-Z]+ ') AS middle_name > ,SUBSTR('JOSE ANTONIO DA SILVA JR.', REGEXP_INSTR('JOSE ANTONIO DA SILVA > JR.', ' ', 1, 2), LENGTH('JOSE ANTONIO DA SILVA JR.') - 1) AS last_name > FROM dual; > > Atenciosamente, > > Marcus Pavan. > > ________________________________ > De: Leandro Valiengo > <leandro_valie...@yahoo.com.br<leandro_valiengo%40yahoo.com.br> > > > Para: oracle_br@yahoogrupos.com.br <oracle_br%40yahoogrupos.com.br> > Enviadas: Sábado, 14 de Agosto de 2010 15:16:16 > Assunto: [oracle_br] "Dividir" nome > > > Oi grupo, > > Boa tarde. > > Estou quebrando minha cabeca aqui para "dividir" um nome. > > Ex: > > O campo NM_CLIENTE, por exemplo, contem: Luiz Paulo Costa Silva (pode ter 2 > > e n nomes) > > Preciso de um comando que faça: > > FIRST_NAME: LUIZ > LAST_NAME: SILVA > MIDDLE_NAME: PAULO COSTA > > Para conseguir o primeiro nome é tranquilo, uso o INSTR para procurar o > primeiro espaco ' ' e depois coloco o -1. Ai recupero o primeiro nome. > > Para o resto tá complicado. Dei uma olhada no portal e não encontrei nada a > > respeito. Desde já agradeco. > > Att. > > Leandro > > [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]