Fórum select case #351914
16/01/2008
0
por exemplo
select case of
0 : faz esse
1 : outro select
e assim por diante.
se alguem tiver um exemplo agradeco.
vlw
Ciotti
Curtir tópico
+ 0Posts
16/01/2008
Djjunior
select case when campo = 1 then "a" when campo = 2 then "b" else "?" end from tabela
Funcina em SQL / Oracle (me parece que a partir do 9
O Oracle tb tem o decode
decode(campo, valor, verdadeiro, falso)
ou seja:
Decode(campo, 1, ´a´, 2, ´b´, ´?´)
Gostei + 0
16/01/2008
Aroldo Zanela
Sim, veja o exemplo:
select matricula, case unidade when 1 then ´Sul´ when 2 then ´Norte´ when 3 then ´Taguatinga´ end Unidade from tbInfoEscolares
Gostei + 0
16/01/2008
Ciotti
por exemplo
id
cpf
razao_social
nesse caso gostaria de saber se quando eu selecionar o id ele so faz pesquisa com id , cpf a mesma coisa e assim vai.
consigo fazer de outras formas mas tentei usando case nao consegui.
seria assim mais ou menos assim
select case componente.index of
0: faz a pesquisa de id
1: faz pesquisa cpf
2 : faz pesquisa razao social
tipo em fez de ficar usando if uso case.
vlw gente
case
Gostei + 0
16/01/2008
Djjunior
where (campo1 = :param1 or :param1 = 0) and (campo2 = :param2 or :param2 = 0) and (campo3 = :param3 or :param3 = 0)
só que ñ recomento esse tipo de código, pq com isso o banco deixa de usar os indices e passa a fazer fullScan na tabela, mas, se as tabelas forem pequenas tudo bem. :twisted:
Gostei + 0
17/01/2008
Aroldo Zanela
Não estou certo de ter compreendido ainda, mas:
function TForm1.Pesquisa(Tipo: Integer; Argumento: Variant): string; begin case Tipo of 1: Result := ´Select * from xTabela where codigo = ´ + VarToStr(Argumento); 2: Result := ´Select * from xTabela where cpf = ´ + QuotedStr(Argumento); 3: Result := ´Select * from xTabela where razao like´ + QuotedStr(´¬´+Argumento); end; end; procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage( Pesquisa( rgCriterio.ItemIndex+1, ´111222333777´)); end;
Gostei + 0
17/01/2008
Djjunior
´Select * from xTabela where codigo = ´ + edt.text
Isso gera furo de segurança, além de não permitir que o seu SGDB utiliza cache.
prefira sempre usar parmetros em suas querys
Gostei + 0
17/01/2008
Pestana_
´Select * from xTabela where codigo = ´ + edt.text
Ola djjunior, você poderia explicar porque gera furos de segurança?
Obrigado pela atenção!
Gostei + 0
18/01/2008
Djjunior
se alguem rodar um sqlMonitor e ver que suas querys são deste tipo ele pode alterar o conteúdo do seu edit para algo do tipo:
´1 or 0 = 0´
de forma que sua query que era pra ser
´Select * from xTabela where codigo = 1
vai ficar
Select * from xTabela where codigo = 1 or 0 = 0
e em vez de trazer somente um registro ele irá trazer todos
Gostei + 0
18/01/2008
Pestana_
´Select * from xTabela where codigo = 1
Select * from xTabela where codigo = 1 or 0 = 0
[b:41af96233a]djjunior,[/b:41af96233a] Obrigado por responder!
valeu mesmo por essa dica, eu não tinha nem pensado nisso, preciso rever meus códigos. :lol:
Abraços,
Pestana.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)