Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

-=Érico=-

Fazer o CASE antes do WHERE

Recommended Posts

Olá a todos, estou com um pequeno problema e gostaria de saber se é possivel fazer isso.

 

Quando se executa um select, primeiro é solucionado a clausula WHERE, para depois fazer as funções dentro dos campos.

 

Gostaria de executar um comando abaixo só que de uma maneira que funcionasse.

 

SELECT (CASE numero WHEN 1 THEN 'Um' WHEN 2 THEN 'Dois' ELSE 'Três' END) numero_f FROM tabela WHERE  numero_f = 'Um'

Geraria um erro dizendo que o campo numero_f não existe, se eu matenho o nome do campo como numero, na clausula WHERE, eu teria que procurar por '1' ao inves de 'Um'. E eu quero procurar 'Um' e achar registros com o número '1'.

 

Espero que tenha conseguido explicar claramente. Aguardo uma resposta de alguém que possa me ajudar. Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

não entendi muito bem, da forma que você está usando o CASE, não precisa ter um wheree a sintaxe do case está erradaselect (case when numero = 1 then 'UM' else (case when numero = 2 then 'DOIS' else 'TRES' end) end) from tabela

Compartilhar este post


Link para o post
Compartilhar em outros sites

não entendi muito bem, da forma que você está usando o CASE, não precisa ter um wheree a sintaxe do case está erradaselect (case when numero = 1 then 'UM' else (case when numero = 2 then 'DOIS' else 'TRES' end) end) from tabela

NaPraia, A sintaxe não estava errada, só cometi um pequeno erro, desculpe, eu coloquei o termo CASE no lugar no WHEN antes do '2'. Já corrigi. Dessa maneira que você fez que eu nunca ví.como assim não precisa de WHERE por causa do CASE? A função CASE não tem nada a ver com a clausula WHERE.Colocar um Exemplo aqui..tabela1
| campo1 | campo2 || 1	  | Nome1  || 2	  | Nome2  || 3	  | Nome3  |
Gostaria de fazer um select, obtendo o registro com o campo1 = 1, só que em vez de mostrar 1, quero mostrar 'Um', e na clausula WHERE tb, eu quero digitar "Um", em vez de digitar '1'.Da maneira que eu postei anteriormente.
SELECT (CASE campo1 WHEN 1 THEN 'Um' WHEN 2 THEN 'Dois' ELSE 'Três' END) campo1 FROM tabela1 WHERE campo1 = 'Um'
Só que fazendo dessa maneira não funciona, porque no select, ele resolve primeiro a clausula WHERE, pra depois fazer o select, então, o comando acima, retornaria vazio.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.