sql
코드 복사
CASE case_value
WHEN when_value THEN result
[WHEN when_value THEN result] ...
[ELSE result]
END
또는
sql
코드 복사
CASE
WHEN search_condition THEN result
[WHEN search_condition THEN result] ...
[ELSE result]
END
MySQL 문서: CASE 문 공식 레퍼런스
만약 조건 대상 컬럼이 하나이고, 그 컬럼 값이 특정 명확한 값으로 분류될 때 다음과 같이 작성할 수 있습니다.
sql
코드 복사
CASE fruit
WHEN 'apple' THEN '사과'
WHEN 'pineapple' THEN '파인애플'
WHEN 'strawberry' THEN '딸기'
ELSE '기타'
END AS fruit_korean
fruit 값이 'apple'이면 '사과', 'pineapple'이면 '파인애플' … 그 외에는 '기타'로 처리주의
- 이렇게
CASE 컬럼명 WHEN 값 THEN ...형태를 쓰면, 내부WHEN에서는 해당 컬럼이 특정값일 때만 분기를 실행합니다.WHEN fruit = 'apple'처럼 쓰지 않고, 바로WHEN 'apple' THEN ...형태로 사용할 수 있습니다.
sql
코드 복사
CASE
WHEN fruit LIKE '%berry%' THEN '베리류' -- 조건 1
WHEN fruit IN ('Mango','Banana')
OR fruit_cate = 'Tropical'
THEN '열대과일류' -- 조건 2
ELSE '기타'
END AS fruit_cate2
LIKE, IN, OR, AND 등 SQL 논리연산자를 활용해 복합 조건을 구현 가능.fruit LIKE '%berry%' → 문자열에 'berry'가 들어있으면 ‘베리류’로 분류.CASE fruit WHEN 'apple' THEN ... 구조로 간단히CASE WHEN col1 = ... AND col2 = ... THEN ... END 형태로 검색 조건 작성CASE WHEN ... END AS new_columnLIKE '%...' 연산 등 복합 조건이 많아지면 쿼리 최적화를 고민해야 할 수도 있음.sql
코드 복사
SELECT
fruit,
CASE fruit
WHEN 'apple' THEN '사과'
WHEN 'pineapple' THEN '파인애플'
WHEN 'strawberry' THEN '딸기'
ELSE '기타'
END AS fruit_korean,
CASE
WHEN fruit LIKE '%berry%' THEN '베리류'
WHEN fruit IN ('Mango','Banana')
OR fruit_cate = 'Tropical'
THEN '열대과일류'
ELSE '기타'
END AS fruit_cate2
FROM my_fruits_table;
AND, OR, IN, LIKE 등)을 통해 분류할 때 유용합니다.CASE ... END AS 새컬럼 형태로 새 값을 만들어낼 수 있으며,결국 CASE WHEN을 잘 활용하면 SQL 쿼리만으로도 간단한 로직 분기와 카테고리화를 빠르게 구현할 수 있습니다.