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
  

Mensagemem Ter, 01 Out 2019 11:13 am

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.
Código: Selecionar todos
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

Mensagemem Qua, 02 Out 2019 10:07 am

Conseguir fazer.

Código: Selecionar todos
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;
/
laureano



Voltar para PL/SQL

Quem está online

Usuários navegando neste fórum: Bing [Bot] e 2 visitantes