[firebase-br] Retirar valores em comando SQL.

Robson Zambroti rlzambroti em gmail.com
Sex Jun 15 12:25:21 -03 2012


Pode usar esta procedure para isso:

CREATE PROCEDURE SP_LTRIM_CHAR (
    P_VALOR VARCHAR(1000),
    P_CHAR CHAR(1))
RETURNS (
    R_VALUE VARCHAR(1000))
AS
DECLARE VARIABLE V_POSICAO INTEGER;
DECLARE VARIABLE V_TAMANHO INTEGER;
DECLARE VARIABLE V_CHAR CHAR(1);
DECLARE VARIABLE V_VALIDAR CHAR(1);
begin
  R_VALUE   = '';
  V_POSICAO = 1;
  V_TAMANHO = CHAR_LENGTH( :P_VALOR );
  V_VALIDAR = 'S';
  WHILE (:V_POSICAO <= :V_TAMANHO) DO
  BEGIN
    V_CHAR = SUBSTRING( :P_VALOR FROM :V_POSICAO FOR 1 );
    IF (:V_VALIDAR = 'S') THEN
    BEGIN
      IF ((:V_CHAR = :P_CHAR) OR (:V_CHAR = ' ')) THEN
        V_VALIDAR = 'S';
      ELSE
        V_VALIDAR = 'N';
    END
    IF (V_VALIDAR = 'N') THEN
    BEGIN
      R_VALUE = :R_VALUE || :V_CHAR;
    END
    V_POSICAO = :V_POSICAO + 1;
  END
  SUSPEND;
end;

Exemplo de uso:
EX.01
SELECT R_VALUE
  FROM SP_LTRIM_CHAR('00000000A00123','0')

EX.02
SELECT (SELECT R_VALUE FROM SP_LTRIM_CHAR('00000000A00123','0')) AS CAMPOX
FROM RDB$DATABASE

No exemplo 02 você pode colocar o select pra retornar como se fosse um
campo.

Att.
Robson Zambroti

Em 15 de junho de 2012 11:27, user <rlopesjr em gmail.com> escreveu:

> Matheus Mathias escreveu:
>
>> Boa tarde,
>> eu estou com um problema aqui que seria o seguinte.
>> eu tenho um valor "00000000A00123" e não consegui ver uma solução para
>> fazer
>> retirar os 0 a esquerda.
>> O resultado ficaria o seguindo "A00123".
>> não sei se isso seria possivel fazer no Firebird, mas no Delphi mesmo ja
>> consegui fazer isso.
>> Eu precisava para poder fazer a comparação.
>>
>>
>
> Tente essa:
>
> select trim (leading '0' from '00000000A00123') from rdb$database
>
>
> O leading retira caracteres à esquerda e o trainling retira caracteres à
> direita.
>
>
> ______________________________**________________
> 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<http://www.firebase.com.br/fb/artigo.php?id=1107>
> Para consultar mensagens antigas: http://firebase.com.br/**pesquisa<http://firebase.com.br/pesquisa>
>



-- 
Att.
Robson Zambroti



Mais detalhes sobre a lista de discussão lista