Esta seção descreve as expressões condicionais em conformidade com o SQL disponíveis no PostgreSQL.
Dica: Havendo alguma necessidade não atendida pelas funcionalidades destas expressões condicionais, deve ser considerado o desenvolvimento de um procedimento armazenado usando uma linguagem de programação com mais recursos.
CASE WHEN condição THEN resultado
[WHEN ...]
[ELSE resultado]
ENDA expressão CASE do SQL é uma expressão condicional genérica, semelhante às declarações if/else de outras linguagens. A cláusula CASE pode ser empregada sempre que a utilização de uma expressão for válida. A condição é uma expressão que retorna um resultado booleano. Se a condição for verdade, então o valor da expressão CASE é o resultado. Se a condição for falsa, todas as cláusulas WHEN seguintes são percorridas da mesma maneira. Se nenhuma condição WHEN for verdade, então o valor da expressão CASE é o valor do resultado na cláusula ELSE. Se a cláusula ELSE for omitida, e nenhuma condição for satisfeita, o resultado será nulo.
Um exemplo:
=> SELECT * FROM teste;
a
---
1
2
3
=> SELECT a,
CASE WHEN a=1 THEN 'um'
WHEN a=2 THEN 'dois'
ELSE 'outro'
END
FROM teste;
a | case
---+-------
1 | um
2 | dois
3 | outro
Os tipos de dado de todas as expressões para resultado devem poder ser convertidos no mesmo tipo de dado de saída. Veja a Seção 7.5 para obter mais detalhes.
CASE expressão
WHEN valor THEN resultado
[WHEN ...]
[ELSE resultado]
END Esta expressão CASE "simplificada" é uma
variante especializada da forma geral mostrada acima. A
expressão é calculada e comparada com
todos os valores das cláusulas
WHEN, até ser encontrado um igual. Se nenhum valor
igual for encontrado, o resultado na
cláusula ELSE (ou o valor nulo) é retornado. Esta forma é
semelhante à declaração switch da linguagem C.
O exemplo mostrado anteriormente pode ser escrito utilizando a sintaxe simplificada do CASE:
=> SELECT a,
CASE a WHEN 1 THEN 'um'
WHEN 2 THEN 'dois'
ELSE 'outro'
END
FROM teste;
a | case
---+-------
1 | um
2 | dois
3 | outro
COALESCE(valor [, ...]) A função COALESCE retorna o primeiro de seus
argumentos que não for nulo. Geralmente é útil para substituir o
valor padrão dos valores nulos quando os dados são usados para exibição.
Por exemplo:
SELECT COALESCE(descricao, descricao_curta, '(nenhuma)') ...
NULLIF(valor1, valor2) A função NULLIF retorna o valor nulo se, e somente se,
valor1 e
valor2 forem iguais. Senão, retorna
valor1. Pode ser utilizado para realizar
a operação inversa do exemplo para COALESCE
mostrado acima:
SELECT NULLIF(valor, '(nenhuma)') ...
Dica: Tanto o
COALESCEcomo oNULLIFsão apenas formas abreviadas das expressões CASE. Na realidade, são convertidos em expressões CASE em um estágio bem inicial do processamento, fazendo o processamento subseqüente supor que está lidando com o CASE. Por isso, a utilização incorreta doCOALESCEou doNULLIFpode produzir uma mensagem de erro fazendo referência ao CASE.