[MySQL] case when절
MySQL의 CASE문은 프로그래밍 언어의 if~else 문, switch과 유사하다.
문법
CASE (컬럼명)
WHEN condition1 THEN result1
WHEN condition2 THEN result2
WHEN conditionN THEN resultN
ELSE result
END;
- CASE와 WHEN 사이에 특정 컬럼명이 들어갈 수 있으며, condintion과 일치하면 해당 절의 result값을 반환한다.
- 특정 컬럼이 condition들 중 일치하는 값이 없으면 ELSE 절의 result값을 반환한다.
- 특정 컬럼과 일치하는 condition이 없고, ELSE 절이 없으면 NULL을 반환한다.
- condition은 필수로 있어야하고, 나열된 순서로 취급된다(출력순서가 같음).
- result역시 필수로 있어야하고 특정컬럼과 일치하는 condition을 만나면 실행을 멈추고, 그에 해당하는 result값을 반환한다(condition과 result는 각각 하나씩만 쌍을 이룬다).
- CASE와 WHEN 사이에 특정 컬럼명 없이 boolean값이나 boolean을 판별하는 구문을 넣어서 true이면 result 값을 반하고, false면 다음 절로 넘어간다
- CASE 이하 WHEN ~ THEN절은 다수가 존재할 수 있다.
예제)
SELECT CustomerName, City, Country FROM Customers
ORDER BY (CASE
WHEN City IS NULL THEN Country
ELSE City
END);
SELECT절 뿐만 아니라 WHERE절이나 ORDER BY 절에도 쓰일 수 있다.
출력)
적용 예제)
author테이블
SELECT name,
(CASE profile WHEN 'CEO' THEN '사장'
ELSE '직원'
END) AS role
FROM author;
출력)
Leave a comment