CASE SQL 식은 조건을 살펴보고 첫 번째 조건이 충족되면 값을 반환합니다(예: if-then-else 문). 따라서 조건이 충족되자마자 명령은 읽기를 중단하고 결과를 반환합니다. 조건이 충족되지 않으면 ELSE 절의 값이 반환됩니다.
ELSE 부분이 없고 조건을 만족하지 않으면 NULL을 반환한다.
SELECT column1, column2, ...
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
WHEN conditionN THEN resultN
ELSE result
END
다음은 "Northwind" 데이터베이스의 "OrderDetails" 테이블에 있는 샘플입니다.
OrderDetailID | OrderID | ProductID | Quantity |
---|---|---|---|
1 | 10248 | 11 | 12 |
2 | 10248 | 42 | 10 |
3 | 10248 | 72 | 5 |
4 | 10249 | 14 | 9 |
5 | 10249 | 51 | 40 |
다음 SQL 문은 조건을 확인하고 첫 번째 조건이 충족되면 값을 반환합니다.
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
이 SQL 쿼리는 고객을 도시(City)별로 정렬합니다. 그러나 도시가 NULL인 경우 국가별로 정렬합니다(Country).
Run SQLSELECT CustomerName, City, Country
FROM Customers
ORDER BY
(CASE
WHEN City IS NULL THEN Country
ELSE City
END)