[firebase-br] Remover o ultimo caractere de uma string

Renan Rogowski Pozzo renanrpozzo em gmail.com
Qui Fev 18 15:53:02 -03 2016


Olá Gladiston.
Basicamente o esquema com o reverse ia fazer a mesma coisa que você fez
mudando a posição da vírgula.
O reverse iria inverter a string, assim a vírgula do final viria para o
início, o substring removeria o primeiro caractere (assim como você fez) e
depois o reverse novamente voltaria a posição correta dos caracteres.

P.S.: Confesso que pensei em sugerir para você mudar a posição da vírgula,
mas pensei que poderiam ter mais coisas além da vírgula que iriam
influenciar ou que você já tinha feito isso hehe

Abraço,
Renan Rogowski Pozzo

*"E a paz de Deus, que excede todo o entendimento, guardará os vossos
corações e os vossos pensamentos em Cristo Jesus." Filipenses 4.7*

Em 18 de fevereiro de 2016 15:42, Gladiston Santana <gladiston em vidy.com.br>
escreveu:

> Obrigado pela prontidão, mas não entendi bem o seu esquema com o reverse.
> O problema de fazer o que eu quero é que a funcão right, assim como a
> maioria das que lidam com strings são determinísticas, você precisa saber o
> tamanho previamente para fazer o que eu quero.
> Isso é ótimo para variáveis que recebem e depois processam, mas é inutil
> para onde não há como processar numa variáveis antes.
> Mas achei uma função no firbeird que não é determinística, a substring,
> onde o ultimo parametro pode ser suprimido e ele pegará até o termino da
> string.
> De inicio, não parece resolver o problema, mas se eu jogar a vírgula para o
> inicio de cada palavra (ao invés do termino como era antes) então resolve
> porque a frase começará com virgula(invertendo o problema), mas daí é só
> usar o substring e pegar da segunda char em diante.  Veja o teste:
>
> execute block
> returns(resultado varchar(255))
> as
> -- simulando as varaiaveis da tabela
> declare variable STATUS varchar(1)='A';
> declare variable SE_AUTORIZAR varchar(1)='S';
> declare variable SE_CALCULAR varchar(255)='S';
> declare variable SE_VENCER varchar(255)='N';
> begin
>   resultado=SUBSTRING(REPLACE(
>       CASE
>         WHEN ((STATUS='A') AND (SE_AUTORIZAR='S') AND (SE_CALCULAR='S') AND
> (SE_VENCER='S')) THEN 'Informativo'
>         WHEN (STATUS='A') THEN
>            iif(SE_AUTORIZAR='S', ',autorizar', '')||
>            iif(SE_CALCULAR='S',',[re]calcular','')||
>            iif(SE_VENCER='S',',vencer','')
>         WHEN (STATUS='I') THEN 'Informativo'
>         WHEN (STATUS='C') THEN 'Desbloqueado'
>         WHEN (STATUS='F') THEN 'Concluído'
>         ELSE  'Desconhecido'
>       end, ' ','') FROM 2);
>   suspend;
> end
>
> Agora, é só jogar a expressão acima no campo calculado e estará resolvido.
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas:
> http://www.firebase.com.br/pesquisa_lista.html
>



Mais detalhes sobre a lista de discussão lista