Retorne só o segundo nome

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
laureano
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 2
Registrado em: Seg, 30 Set 2019 4:59 pm

Galera, bom dia!

Estou precisando de ajuda no exercício abaixo:
Eu preciso que ele me mostre só o segundo nome dele.
O máximo de código que conseguir fazer também esta abaixo.

--5 - Crie a função FN_2o_NOME() que receba um nome composto como parâmetro e então mostre
--apenas o segundo nome.
--ex: select FN_2o_NOME('jão silva Oliveira') from dual;
--resp: silva

Esse código esta retornando silva Oliveira, mais só quero o silva.

Selecionar tudo

create or replace function FN_2o_NOME(nome varchar2) return varchar2
is
begin
  
    for x in 1.. length(nome) loop  
        if substr(nome,x,1) = ' '
        then
            return substr(nome,x+1);
        end if;
        
    end loop; 
    return ' ';
end;
desde já agradeço.
laureano
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 2
Registrado em: Seg, 30 Set 2019 4:59 pm

Conseguir fazer.

Selecionar tudo

create or replace function FN_2o_NOME(nome varchar2) return varchar2
is
v_inicial number := 0;
cont number := 0;
resp varchar(300) := '';
v_final number := 0;
begin
  
    for x in 1.. length(nome) loop  
        if substr(nome,x,1) = ' ' and v_inicial = 0
        then
           v_inicial := x+1;
           elsif substr(nome,x,1) = ' ' and x > v_inicial
           then
              v_final := x - v_inicial;
        end if;
        resp := substr(nome,v_inicial,v_final);
    end loop; 
    return resp;
end;
/
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 10 visitantes