A expressão SQL CASE analisa as condições e retorna um valor quando a primeira condição é atendida (por exemplo, uma instrução if-then-else). Assim, assim que a condição for atendida, a instrução irá parar de ler e retornar o resultado. Se nenhuma condição for atendida, o valor na cláusula ELSE será retornado.
Se não houver parte de ELSE e as condições não forem atendidas, NULL será retornado.
SELECT column1, column2, ...
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
WHEN conditionN THEN resultN
ELSE result
END
A seguir está um exemplo da tabela "OrderDetails" do banco de dados "Northwind":
OrderDetailID | OrderID | ProductID | Quantity |
---|---|---|---|
1 | 10248 | 11 | 12 |
2 | 10248 | 42 | 10 |
3 | 10248 | 72 | 5 |
4 | 10249 | 14 | 9 |
5 | 10249 | 51 | 40 |
A seguinte instrução SQL verifica as condições e retorna um valor quando a primeira condição é atendida:
Run SQLSELECT OrderID, Quantity,
CASE
WHEN Quantity > 30 THEN 'The quantity is greater than 30'
WHEN Quantity = 30 THEN 'The quantity is 30'
ELSE 'The quantity is under 30'
END AS QuantityText
FROM OrderDetails
Esta consulta SQL classifica os clientes por cidade (City). No entanto, se a cidade for NULL, classifique por país (Country):
Run SQLSELECT CustomerName, City, Country
FROM Customers
ORDER BY
(CASE
WHEN City IS NULL THEN Country
ELSE City
END)