First Match 기법을 사용하기 때문에 위의 조건부터 체크하며 하나의 조건이 만족하면 해당 처리를 수행 후 그 아래는 확인하지 않고 바로 END로 이동한다. 어떤 것에도 들어맞지 않으면 ELSE의 처리를 수행한다.
조건 CASE
SELECT
customer, quantity,
CASE
WHEN quantity <= 3 THEN 1000
WHEN quantity <= 7 THEN 1200
WHEN quantity <= 10 THEN 1500
ELSE 2000
END AS delivery_fee
FROM
delivery;
WHEN 뒤에 어떤 조건을 주고, THEN 뒤에 해당 조건을 만족한다면 실행할 동작을 작성한다.
만약 "WHEN quantity <= 10 THEN 1500"이 맨 위로 갈 경우 전부 맨 위에서 걸릴 것이기 때문에 항상 내려갈수록 조건의 범위가 좁아지도록 설정해주어야 한다(피라미드 형태).
값 CASE
SELECT
customer,
CASE delivery_time
WHEN 1 THEN "오전"
WHEN 2 THEN "오후"
WHEN 3 THEN "야간"
ELSE "지정 없음"
END AS delivery_time2
FROM
delivery;
WHEN 뒤에 어떤 값을 주고, CASE 뒤의 Column이 해당 값이라면 THEN 뒤의 값을 END AS 뒤의 별명으로 출력한다.
'IT > Database' 카테고리의 다른 글
[RDBMS] CAST 함수 (0) | 2021.10.06 |
---|---|
[RDBMS] IFNULL, NULLIF 함수 (0) | 2021.10.06 |
[RDBMS] IF 함수 및 함수 중첩(nest) (0) | 2021.10.06 |
[RDBMS] WHERE와 HAVING의 차이 (0) | 2021.10.05 |
MySQL Workbench Tips (Updating) (0) | 2021.10.05 |