Remover a ultima virgula da string

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
facc
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 104
Registrado em: Qua, 27 Mai 2009 2:37 pm
Localização: Cerquilho / SP

Bom dia,

Tenho uma função que retorna uma string separada por virgula
000012, 000025, 000045,
Preciso tirar essa ultima virgula. Como pode ser feito?
DanielNN
Moderador
Moderador
Mensagens: 641
Registrado em: Seg, 03 Set 2007 3:26 pm
Localização: Fortaleza - CE
att,

Daniel N.N.

Retira tudo após a última vírgula:

Selecionar tudo

select substr(&campo,1,instr(&campo,',',-1)-1) 
from dual
Retira último caractere:

Selecionar tudo

select substr(&campo,1,length(&campo)-1) 
from dual
leandromiranda87
Rank: Programador Pleno
Rank: Programador Pleno
Mensagens: 43
Registrado em: Ter, 20 Mar 2012 11:37 am
Localização: Campinas
Leandro L. Miranda

Selecionar tudo

select SUBSTR('000012, 000025, 000045,', 1, INSTR('000012, 000025, 000045,',',', 1, 3)-1) from dual;

Traduzindo:

O comando INSTR procura a posição de determinado valor dentro de uma string.

Selecionar tudo

INSTR('000012, 000025, 000045,',',', 1, 3)
Nesse caso ele irá procurar uma ',' (vírgula), e irá retornar a posição em que ela está.
Os números 1 e 3 no fim do comando significam que a procura começa desde o primeiro caractere de toda a string, e busca a terceira ocorrência da vírgula. Nesse caso, o resultado é 23...

O comando SUBSTR vai 'cortar' essa string.
Ele faz a busca de toda a string, começando do primeiro caractere também, e vai até 23

Selecionar tudo

INSTR('000012, 000025, 000045,',',', 1, 3) = 23) -1
Conseguindo assim o resultado esperado.

Espero ter ajudado.

Att,
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brothers,

Também faço da seguinte forma:

Selecionar tudo

-- Se for sempre o ultimo caractere,
-- busco o Substr do primeiro até o ultimo menos 1. 
declare
  vstring varchar2(100) := '1,2,33,2,45,6,21,477,2,';
  vresult varchar2(100);
begin
  vresult := substr(vstring,1,length(vstring)-1);
  dbms_output.put_line(vresult);
end;
--  
facc
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 104
Registrado em: Qua, 27 Mai 2009 2:37 pm
Localização: Cerquilho / SP

Muito obrigado.

Todos funcionaram.
Responder
  • Informação
  • Quem está online

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