Fórum Remover zeros a esquerda em tabela firebird #56928
20/09/2006
0
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
Curtir tópico
+ 0Posts
21/09/2006
Raserafim
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
Gostei + 0
21/09/2006
Raserafim
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
Gostei + 0
21/09/2006
Acacio
Gostei + 0
08/12/2016
Maicon Saraiva
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));
Gostei + 0
08/12/2016
Maicon Saraiva
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;
Gostei + 0
08/12/2016
Osmar Filho
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
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)