GARANTIR DESCONTO

Fórum Remover zeros a esquerda em tabela firebird #56928

20/09/2006

0

Olá pessoal!
Fiz uma importação de dados de uma tabela paradoxx, só que o codigo ficou com zeros as esquerda, preciso de ajuda para fazer um script para remover os zeros a esquerda desa tabela, pois dai as minhas consultas não funcionam direto.
Deixe eu me fazer entender, eu coloco o codigo em um edit para localizar o cliente por exemplo, pelo codigo, mas dai como o codigo é 00081 por exemplo, eu digito 81 e ele não acha, então precisaria remover estes zeros.
Alguem pode me ajudar!

Agradeço desde já a atenção de todos!


Jorgerock

Jorgerock

Responder

Posts

21/09/2006

Raserafim

tenta procurar aqui no forum sobre TRIM. no SQL é o LTRIM.
já vi uma certa vez aqui no forum alguém dizendo que o firebird não tinha esta função, a não ser utilizando UDF. mas da uma procurada e posta o resultado


Responder

Gostei + 0

21/09/2006

Raserafim

tenta procurar aqui no forum sobre TRIM. no SQL é o LTRIM.
já vi uma certa vez aqui no forum alguém dizendo que o firebird não tinha esta função, a não ser utilizando UDF. mas da uma procurada e posta o resultado


Responder

Gostei + 0

21/09/2006

Acacio

Se o campo é inteiro o banco não salva zeros a esquerda. Então se ele está mostranto os zeros a esquerda procure no componente que está mostranto a proprierdade formatfloat e limpe o campo.


Responder

Gostei + 0

08/12/2016

Maicon Saraiva

Caso alguém ainda esteja precisando segue uma dica adaptada do ActiveDephi:

Crie uma Procedure:
SET TERM ^ ;

create or alter procedure F_DSALE_CIDADE_T100 (
    PAID_USU varchar(10),
    PAID_EMP varchar(10),
    PAID_REP varchar(10))
returns (
    ID varchar(50),
    CODIGO varchar(50),
    DESCRICAO varchar(50),
    ID_EMP varchar(10),
    ID_UF varchar(10))
as
BEGIN
FOR
Select distinct cid.codigo id,
                cid.codigo codigo,
                cid.cidade descricao,
                '1' empresa,
                cid.uf id_uf
  from C000006 cid, C000007 cli
 where cid.codigo = cli.codcidade
   --Se for vendedor 2 só puxa dele, se for outro puxa todos
   and cli.codvendedor=:paid_rep
   or 1=iif(:paid_rep='000002',-1,1)
   --and cli.codvendedor = :paid_rep
INTO
:Id,
:Codigo,
:Descricao,
:Id_Emp,
:Id_UF
DO
SUSPEND;
END^

SET TERM ; ^

/* Following GRANT statetements are generated automatically */

GRANT SELECT ON C000006 TO PROCEDURE F_DSALE_CIDADE_T100;
GRANT SELECT ON C000007 TO PROCEDURE F_DSALE_CIDADE_T100;

/* Existing privileges on this procedure */

GRANT EXECUTE ON PROCEDURE F_DSALE_CIDADE_T100 TO SYSDBA;


Depois você pode usar da seguinte forma:


//Para consultar (e comparar se funciona corretamente)
select codbarra, (select * from RetiraZerosAEsquerda(codbarra)) from PRODUTOS

//Para alterar o campo (removendo os zeros)
update PRODUTOS set codbarra = (select * from RetiraZerosAEsquerda(codbarra));

Responder

Gostei + 0

08/12/2016

Maicon Saraiva

#### CORREÇÃO ###
A procedure correta é essa:

SET TERM ^ ;

create or alter procedure RetiraZerosAEsquerda (
    V_CODIGO varchar(100)
    )
returns (
    V_RESULTADO varchar(100))
as
BEGIN
      V_RESULTADO = v_CODIGO;
      WHILE (Substring(V_RESULTADO from 1 for 1)='0') do
       V_RESULTADO = Substring(v_resultado from 2 for 100);

      SUSPEND;
END^

SET TERM ; ^

/* Existing privileges on this procedure */
GRANT EXECUTE ON PROCEDURE RetiraZerosAEsquerda TO SYSDBA;

Responder

Gostei + 0

08/12/2016

Osmar Filho

Boa tarde Jorgerok,

Tente fazer um cast no campo.
Por exemplo:

select <campo1>, <campo2>, <campo3>,.....
from <tabela>
where cast(<campo_pesquisa> as integer) = <valor_pesquisa>


Um exemplo real do CAST

select cast(''00081'' as integer) valor
from rdb$database


Espero ter ajudado.
Abraço
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar