[firebase-br] Como converter campo varchar para numeric

Mauricio Cezar Cirino mauriciocirino em terra.com.br
Seg Out 26 17:10:44 -03 2009


Tenho uma Stored Procedure, preciso converter um campo VARCHAR para INTEGER
como posso proceder... e manter os zeros a direita do meu campo fixado em 
tamanho 4...
pois reutilizo o valor em uma tabela de calculo, onde tenho quer ter inicio 
em 0001 e não 1

DECLARE VARIABLE NUM    VARCHAR(12);
DECLARE VARIABLE N1     INTEGER;
DECLARE VARIABLE N2     INTEGER;
DECLARE VARIABLE N3     INTEGER;
DECLARE VARIABLE N4     INTEGER;
DECLARE VARIABLE N5     INTEGER;
DECLARE VARIABLE N6     INTEGER;
DECLARE VARIABLE N7     INTEGER;
DECLARE VARIABLE N8     INTEGER;
DECLARE VARIABLE N9     INTEGER;
DECLARE VARIABLE N10    INTEGER;
DECLARE VARIABLE N11    INTEGER;
DECLARE VARIABLE N12    INTEGER;

DECLARE VARIABLE NN1    VARCHAR(1);
DECLARE VARIABLE NN2    VARCHAR(1);
DECLARE VARIABLE NN3    VARCHAR(1);
DECLARE VARIABLE NN4    VARCHAR(1);
DECLARE VARIABLE NN5    VARCHAR(1);
DECLARE VARIABLE NN6    VARCHAR(1);
DECLARE VARIABLE NN7    VARCHAR(1);
DECLARE VARIABLE NN8    VARCHAR(1);
DECLARE VARIABLE NN9    VARCHAR(1);
DECLARE VARIABLE NN10   VARCHAR(1);
DECLARE VARIABLE NN11   VARCHAR(1);
DECLARE VARIABLE NN12   VARCHAR(1);


DECLARE VARIABLE NPR    INTEGER;
DECLARE VARIABLE SOMA   INTEGER;
DECLARE VARIABLE TOTAL  INTEGER;

begin
   N1  = 0;
   N2  = 0;
   N3  = 0;
   N4  = 0;
   N5  = 0;
   N6  = 0;
   N7  = 0;
   N8  = 0;
   N9  = 0;
   N10 = 0;
   N11 = 0;
   N12 = 0;
   NPR = 0000;
   NPR = :NPROT_INI;
   num = '00000000000';
  begin
   while (NPR < :NPROT_FIM OR NPR = :NPROT_FIM) do
     begin
      num = extract(year from :data) || extract(month from :data) ||
            extract(day from :data) || NPR;
      numero = num;

      soma   = 0;
      total  = 0;

      nn1    = substrlen(NUM,1,1);
      nn2    = substrlen(NUM,2,1);
      nn3    = substrlen(NUM,3,1);
      nn4    = substrlen(NUM,4,1);
      nn5    = substrlen(NUM,5,1);
      nn6    = substrlen(NUM,6,1);
      nn7    = substrlen(NUM,7,1);
      nn8    = substrlen(NUM,8,1);
      nn9    = substrlen(NUM,9,1);
      nn10   = substrlen(NUM,10,1);
      nn11   = substrlen(NUM,11,1);
      nn12   = substrlen(NUM,12,1);

      n1 = nn1;
      n2 = nn2;
      n3 = nn3;
      n4 = nn4;
      n5 = nn5;
      n6 = nn6;
      n7 = nn7;
      n8 = nn8;
      n9 = nn9;
      n10 = nn10;
      n11 = nn11;
      n12 = nn12;

      soma   = 
(n1*12)+(n2*11)+(n3*10)+(n4*9)+(n5*8)+(n6*7)+(n7*6)+(n8*5)+(n9*4)+(n10*3)+(n11*2)+(n12*1);
      total  = (soma / 8);
      total  = (total * 8);
      digito = (soma - total);
      NPROT = NPR;
      DOCORRENC = :DATA;
      NPR    = NPR + 0001;
suspend;
end
end
end


----- Original Message ----- 
From: "Eduardo Belo" <beloelogica em gmail.com>
To: "FireBase" <lista em firebase.com.br>
Sent: Monday, October 26, 2009 4:31 PM
Subject: Re: [firebase-br] Select apenas registros numeico


Pelo que entendi, voçê quer converter VARCHAR para NUMERIC.

Use o CAST, veja o exemplo:

SELECT CC FROM TT
WHERE CC = CAST('VALOR' AS NUMERIC(15, 2))

Boa Sorte!

2009/10/26 Jonas <jonas em hos.com.br>:
> Olá pessoal,
>
> tenho uma tabela TT com um campo CC, sendo que este campo eh um Varchar.
>
> Em um Select, tenho como filtrar apenas os registros que são numericos?
>
> EX:
>
> SELECT * FROM TT WHERE CC IS NUMERIC
>
> Obrigado a todos
>
> --
> ====================================
> www.hos.com.br
> Jonas - Desenvolvimento
>
>
> ______________________________________________
> 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://firebase.com.br/pesquisa
>

______________________________________________
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://firebase.com.br/pesquisa





Mais detalhes sobre a lista de discussão lista