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]

Responder a