Em linguagens de programação como o C e C# este conjunto de instruções serve para testar vários valores de uma mesma variável e executar um bloco específico de instruções.
Na Linguagem SQL, CASE é usado para testar o valor de uma expressão e retornar um valor escalar conforme o resultado obtido. Este tipo é útil principalmente quando códigos que detém a regra de negócios são armazenados no banco e não possuem tabelas relacionadas.
Sua sintaxe básica segue o padrão demonstrado a seguir:
CASE <expressão> WHEN <valor1> THEN <Retorno1> WHEN <.valor2> THEN <Retorno2> … WHEN <valorn> THEN <retornon> -- ELSE é OPCIONAL ELSE <Retorno alternativo> END
Podem existir quantos WHEN forem necessários, mas, o valor a ser testado precisa ser escalar, ou seja, um valor simples, não pode ser uma expressão ou um rowset.
Na tabela PERSON.PERSON existe a coluna PersonType que armazena o tipo de pessoa que os dados representam. Esta coluna não possui relacionamento sendo que o seu valor está definido nos comentários do design da tabela. A instrução abaixo representa como usar a CASE para obter os valores corretos.
select concat(FirstName, ' ', LastName) as CompleteName ,case PersonType when 'SC' then 'Store Contact' when 'IN' then 'Individual (retail) customer' when 'SP' then 'Sales person' when 'EM' then 'Employee (non-sales)' when 'VC' then 'Vendor contact' when 'GC' then 'General contact' else 'Undefined' end as PersonTypeName from Person.Person order by CompleteName
Esta consulta traz o resultado da Figura a seguir que demonstra as primeiras linhas retornadas.