No contexto de expressões SQL em bancos de dados, assinale a construção correta para a cláusula case.
- A)select nome, case genero when 'M' then 'Masculino' else 'Feminino' end as genero_por_extenso from pessoa
Correta, pois usa a sintaxe válida da forma simples do CASE: `CASE expressão WHEN valor THEN resultado ELSE resultado END`.
- B)select nome, case genero equal to 'M' then 'Masculino' otherwise 'Feminino' end as genero_por_extenso from pessoa
Errada, porque `equal to` e `otherwise` não fazem parte da sintaxe SQL para CASE.
- C)select nome, when genero = 'M' then 'Masculino' else 'Feminino' case as genero_por_extenso from pessoa
Errada, pois a estrutura do CASE está invertida e faltam os elementos obrigatórios na ordem correta.
- D)select nome, for genero case 'M' then 'Masculino' case else 'Feminino' as genero_por_extenso from pessoa
Errada, porque `for`, `case else` e a organização proposta não existem na cláusula CASE do SQL.
- E)select nome, case genero when 'M' 'Masculino' otherwise 'Feminino' end as genero_por_extenso from pessoa
Errada, pois falta o `THEN` após `'M'` e `otherwise` continua sendo uma palavra fora da sintaxe padrão.
Gabarito: A
A cláusula CASE em SQL serve para criar uma lógica condicional dentro do SELECT, como se fosse um "se... então... senão". Ela pode aparecer em duas formas clássicas: a forma simples, com a sintaxe `CASE expressão WHEN valor THEN resultado ELSE resultado_fim END`, e a forma pesquisada, com `CASE WHEN condição THEN resultado ELSE resultado_fim END`. Na questão, a construção correta é a da alternativa A, porque ela usa exatamente a estrutura da forma simples: `case genero when 'M' then 'Masculino' else 'Feminino' end`. Aqui, o banco compara o valor da coluna `genero` com `'M'` e, se for igual, retorna "Masculino"; caso contrário, cai no `else` e retorna "Feminino". Perceba que o `END` fecha a expressão CASE, e o `AS genero_por_extenso` apenas dá nome à coluna calculada. Isso é comum em provas: a banca mistura palavras de outras linguagens ou inventa sintaxe que parece plausível, mas não existe em SQL. Em resumo: a alternativa A está correta porque respeita a gramática da cláusula CASE no padrão SQL. As demais trocam `when`, `then`, `else` e `end` por palavras erradas ou embaralham a ordem, o que invalida a construção.