Fórum COMPLEMENTO DE AJUDA EM SQL - VERIFICADO SE É PARA OU IMPAR #392309
12/12/2010
0
Olá a todos!
antes de mais nada meu agradecimento
pela contribuição anterior do colega Winson Lehapan
quanto ao typecast no tipo char para integer.
Utilizo delphi 7 + dbexpress + firebird 1.5 + ib expert.
No exemplo "2 - " mais abaixo
a consulta me retorna todos os registros da tabela (t_0001)...
cujo operação de "SUBTRAÇÃO"
entre os campos do tipo "CHAR" (c_dezena_1 ... etc... c_dezena_6)... é = a 1.
o where me permite filtrar ocorrencias sequencias nos valores dos campos tipo...
"01 02 03 04 15 16" ... ou ... "01 15 16 17 18 26" ... ou ... "01 15 27 28 29 30"...
o programa em desenvolvimento está ligado a combinações lotéricas.
necessito no momento de um auxílio (dica) de como incluir na clausula WHERE...
uma comparação para verificar e filtrar campos cujo conteudo é par (ou impar)...
tipo...
----
1 - necessito de um auxilio para este where
---
select
t_0001.c_dezena_1,
t_0001.c_dezena_2,
t_0001.c_dezena_3,
t_0001.c_dezena_4,
t_0001.c_dezena_5,
t_0001.c_dezena_6
from t_0001
where
(
(cast(t_0001.c_dezena_2 as integer) = numero_par)
and
(cast(t_0001.c_dezena_3 as integer) = numero_par)
....
)
...
----
2 - abaixo a solução para retorno após a subtração entre campos...
(dica de typecast q o colega Winson Lehapan me passou anteriormente)
----
select
t_0001.c_dezena_1,
t_0001.c_dezena_2,
t_0001.c_dezena_3,
t_0001.c_dezena_4,
t_0001.c_dezena_5,
t_0001.c_dezena_6
from t_0001
where
(
(
(cast(t_0001.c_dezena_2 as integer) - cast(t_0001.c_dezena_1 as integer) = 1)
and
(cast(t_0001.c_dezena_3 as integer) - cast(t_0001.c_dezena_2 as integer) = 1)
and
(cast(t_0001.c_dezena_4 as integer) - cast(t_0001.c_dezena_3 as integer) = 1)
)
or
(
(cast(t_0001.c_dezena_3 as integer) - cast(t_0001.c_dezena_2 as integer) = 1)
and
(cast(t_0001.c_dezena_4 as integer) - cast(t_0001.c_dezena_3 as integer) = 1)
and
(cast(t_0001.c_dezena_5 as integer) - cast(t_0001.c_dezena_4 as integer) = 1)
)
or
(
(cast(t_0001.c_dezena_4 as integer) - cast(t_0001.c_dezena_3 as integer) = 1)
and
(cast(t_0001.c_dezena_5 as integer) - cast(t_0001.c_dezena_4 as integer) = 1)
and
(cast(t_0001.c_dezena_6 as integer) - cast(t_0001.c_dezena_5 as integer) = 1)
)
)
Userba
Curtir tópico
+ 0
Responder
Posts
13/12/2010
Wilson Junior
Tente assim
Espero ter colaborado.
select t_0001.c_dezena_1, t_0001.c_dezena_2, t_0001.c_dezena_3, t_0001.c_dezena_4, t_0001.c_dezena_5, t_0001.c_dezena_6 from t_0001 where ( (cast(t_0001.c_dezena_2 as integer) - (cast(t_0001.c_dezena_2 as integer) / 2) * 2 = 0) /* 0 é Par */ and (cast(t_0001.c_dezena_3 as integer) - (cast(t_0001.c_dezena_3 as integer) / 2) * 2 = 1) /* 1 é Ímpar */ .... )
Espero ter colaborado.
Responder
Gostei + 0
13/12/2010
Userba
Tente assim
Espero ter colaborado.
select t_0001.c_dezena_1, t_0001.c_dezena_2, t_0001.c_dezena_3, t_0001.c_dezena_4, t_0001.c_dezena_5, t_0001.c_dezena_6 from t_0001 where ( (cast(t_0001.c_dezena_2 as integer) - (cast(t_0001.c_dezena_2 as integer) / 2) * 2 = 0) /* 0 é Par */ and (cast(t_0001.c_dezena_3 as integer) - (cast(t_0001.c_dezena_3 as integer) / 2) * 2 = 1) /* 1 é Ímpar */ .... )
Espero ter colaborado.
grato mais uma vez colega... "resolvido"
apenas uma pequena observação para que fique mais claro a outros colegas...
como o objetivo é descobrir se o conteúdo inserido em determinada coluna é uma inteiro (par... ou... impar)...
então a sua dica deve ser aplicada apenas ao campo a ser analisado.
abraços.
o novo exemplo retornando se é "impar":
select
t_teste.c_dezena_1,
t_teste.c_dezena_2,
t_teste.c_dezena_3,
t_teste.c_dezena_4,
t_teste.c_dezena_5,
t_teste.c_dezena_6
from t_teste
where
cast(t_teste.c_dezena_1 as integer) - (cast(t_teste.c_dezena_1 as integer) / 2) * 2 <> 0 /* é impar */
...
ou... se desejar retornar "par"... a where ficaria...
...
where
cast(t_teste.c_dezena_1 as integer) - (cast(t_teste.c_dezena_1 as integer) / 2) * 2 = 0 /* é par */
...
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)