AJUDA EM SQL - SELECIONADO E FAZENDO OPERAÇÕES MATEMÁTICAS

Firebird

10/12/2010


banco firebird 1.5
os campos da tabela estão definidos como integer.
o script abaixo é executado (como teste) no IB Expert com sucesso.
(me retorna os registros cuja diferença (subtração) dos campos são iguais a 1).
minha questão é... preciso definir os campos como tipo char... e não integer.
então... como executar tal operação (subtração)
se os campos (dezena_1... até dezena_6) forem do tipo char(2)?
hummm... um typecast? não sei como fazer... podem me dar uma dica?
a utilização final será em delphi 7 + dbexpress + firebird
(software pessoal em desenvolvimento... para loterias (mega sena)).
grato desde já. abraços a todos.

select
    ta_0001.registro,
    ta_0001.dezena_1,
    ta_0001.dezena_2,
    ta_0001.dezena_3,
    ta_0001.dezena_4,
    ta_0001.dezena_5,
    ta_0001.dezena_6

from ta_0001
where
   (
      (
         (ta_0001.dezena_2 - ta_0001.dezena_1) = 1
      and
         (ta_0001.dezena_3 - ta_0001.dezena_2) = 1
      and
         (ta_0001.dezena_4 - ta_0001.dezena_3) = 1
      and
         (ta_0001.dezena_5 - ta_0001.dezena_4) = 1
      )
   or
      (
         (ta_0001.dezena_3 - ta_0001.dezena_2) = 1
      and
         (ta_0001.dezena_4 - ta_0001.dezena_3) = 1
      and
         (ta_0001.dezena_5 - ta_0001.dezena_4) = 1
      and
         (ta_0001.dezena_6 - ta_0001.dezena_5) = 1
      )
   )
Userba

Userba

Curtidas 0

Respostas

Wilson Junior

Wilson Junior

10/12/2010

Veja se é isto que você precisa:
select
    ta_0001.registro,
    ta_0001.dezena_1,
    ta_0001.dezena_2,
    ta_0001.dezena_3,
    ta_0001.dezena_4,
    ta_0001.dezena_5,
    ta_0001.dezena_6

from ta_0001
where
   (
      (
         (CAST(ta_0001.dezena_2 AS INTEGER) - CAST(ta_0001.dezena_1 AS INTEGER)) = 1
      and
         (CAST(ta_0001.dezena_3 AS INTEGER) - CAST(ta_0001.dezena_2 AS INTEGER)) = 1
      and
         (CAST(ta_0001.dezena_4 AS INTEGER) - CAST(ta_0001.dezena_3 AS INTEGER)) = 1
      and
         (CAST(ta_0001.dezena_5 AS INTEGER) - CAST(ta_0001.dezena_4 AS INTEGER)) = 1
      )
   or
      (
         (CAST(ta_0001.dezena_3 AS INTEGER) - CAST(ta_0001.dezena_2 AS INTEGER)) = 1
      and
         (CAST(ta_0001.dezena_4 AS INTEGER) - CAST(ta_0001.dezena_3 AS INTEGER)) = 1
      and
         (CAST(ta_0001.dezena_5 AS INTEGER) - CAST(ta_0001.dezena_4 AS INTEGER)) = 1
      and
         (CAST(ta_0001.dezena_6 AS INTEGER) - CAST(ta_0001.dezena_5 AS INTEGER)) = 1
      )
   )


Espero ter colaborado.
GOSTEI 0
POSTAR