MySQL CASE
CASE는 If then else 문과 비슷합니다.
즉 첫 조건이 충족되면 값을 반환하고 처리합니다.
만약 조건이 충족되지않으면 else절에 들어가게 됩니다.
CASE
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
WHEN conditionN THEN resultN
ELSE result
즉 CASE안에 WHEN절이 if라고 보시면 될것같습니다.
condition1이 만족하면 result1이고 그렇지않으면 else에 걸리게 되는거죠 .
이해를 돕고자 쉬운 예제를 보도록 하죠.
END;
이렇게 쓰입니다. C언어에서도 많이 봐왔기때문에 어려움은 없을 거에요.
OrderDetailID
OrderID
ProductID
Quantity
1
10248
11
12
2
10248
42
10
3
10248
72
5
4
10249
14
9
5
10249
51
40
예
SELECT 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;
OrderID와 Quantity를 뽑는데 조건이 걸린겁니다. 즉 CASE안에 Quantity가 30 초과이면
"The quantity is greater than 30"을 출력하고 END를 만나 빠져나가게 됩니다.
마찬가지로 Quantity가 30일 경우 "The quantity is 30"을 출려갛고 30 미만이면 ELSE에 걸리게 되겠죠.
OrderID | Quantity | QuantityText |
---|---|---|
10248 | 12 | The quantity is under 30 |
10248 | 10 | The quantity is under 30 |
10248 | 5 | The quantity is under 30 |
10249 |
40 |
The quantity is greater than 30 |
출력은 이렇게 될거에요.
SELECT CustomerName, City, Country
FROM Customers
ORDER BY
(CASE
WHEN City IS NULL THEN Country
ELSE City
END);
이런 구문은 정렬을 CITY가 널이면 Country로 정렬하고 그렇지 않으면 CIty로 정렬한다는 뜻입니다.
'데이터베이스 > MySQL' 카테고리의 다른 글
MySQL 데이터베이스 (0) | 2018.12.28 |
---|---|
MySQL 저장 프로시저 (0) | 2018.12.27 |
MySQL INSERT INTO SELECT (0) | 2018.12.27 |
MySQL 테이블 복사 (0) | 2018.12.24 |
MySQL ANY/ALL (1) | 2018.12.24 |