9.13.1. CASE

A expressão SQL CASE é uma expressão condicional genérica, semelhante às instruções if/else em outras linguagens:

CASE WHEN condition THEN result END

As cláusulas CASE podem ser usadas onde quer que uma expressão seja válida. condição é uma expressão que retorna um resultado booleano. Se o resultado for verdadeiro, então o valor da expressão CASE é o resultado que segue a condição. Se o resultado for falso qualquer cláusula subseqüente QUANDO as cláusulas são pesquisadas da mesma maneira. Se nenhuma condição QUANDO a condição for verdadeira, então o valor da expressão de caso é o resultado da cláusula ELSE. Se a cláusula ELSE for omitida e nenhuma condição corresponder, o resultado é nulo.

Um exemplo:

SELECT * FROM test; a--- 1 2 3SELECT a, CASE WHEN a=1 THEN 'one' WHEN a=2 THEN 'two' ELSE 'other' END FROM test; a | case---+------- 1 | one 2 | two 3 | other

Os tipos de dados de todas as expressões de resultado devem ser conversíveis para um único tipo de saída. Veja Seção 10.5 para mais detalhes.

A seguinte expressão CASO “simples” é uma variante especializada da forma geral acima:

CASE expression WHEN value THEN result END

A expressão é computada e comparada com todas as especificações de valor nas cláusulas QUANDO for encontrada uma que seja igual. Se não for encontrada nenhuma correspondência, o resultado na cláusula ELSE (ou um valor nulo) é retornado. Isto é similar à expressão switch em C.

O exemplo acima pode ser escrito usando a sintaxe simples CASE:

SELECT a, CASE a WHEN 1 THEN 'one' WHEN 2 THEN 'two' ELSE 'other' END FROM test; a | case---+------- 1 | one 2 | two 3 | other

Uma expressão CASE não avalia nenhuma subexpressão que não seja necessária para determinar o resultado. Por exemplo, esta é uma forma possível de evitar uma falha divisão por zero:

SELECT ... WHERE CASE WHEN x <> 0 THEN y/x > 1.5 ELSE false END;

Deixe uma resposta

O seu endereço de email não será publicado.