[MySQL입문] CASE
Categories: DB
인프런에 있는 Rookiss님의 [C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part5: 데이터베이스 강의를 듣고 정리한 필기입니다. 😀
🌜 강의 들으러 가기 Click
🚀 CASE
🔥 첫 번째 방법
switch-case 문과 같다!
SELECT birthMonth,
CASE birthMonth -- 여기서부터
WHEN 1 THEN N'겨울'
WHEN 2 THEN N'겨울'
WHEN 3 THEN N'봄'
WHEN 4 THEN N'봄'
WHEN 5 THEN N'봄'
WHEN 6 THEN N'여름'
WHEN 7 THEN N'여름'
WHEN 8 THEN N'여름'
WHEN 9 THEN N'가을'
WHEN 10 THEN N'가을'
WHEN 11 THEN N'가을'
WHEN 12 THEN N'겨울'
ELSE N'몰라요'
END -- 여기까지의 결과를
AS birthSeason -- birthSeason 으로 칭하겠다.
FROM players;
위 코드는 birthMonth
와 birthSeason
열을 출력하는 코드이다.
CASE
+ 값을 따질 열WHEN
+ 값 : if(값)THEN
+ 참이면 실행할 내용ELSE
: (C++ switch-case 의 default 와 같음)
CASE
birthMonth WHEN
3 은 if(birthMonth == 3) 과도 같다. THEN
은 이 if 문이 참일 때 실행하는 부분과도 같다.
- C++ 에서의 switch-case 와는 달리
WHEN
에 해당되면 그THEN
을 실행하고 바로 종료된다. if-else 처럼 !!- C++ 에서는 그 밑에도 다 실행되기 때문에
break
가 필요함.
- C++ 에서는 그 밑에도 다 실행되기 때문에
- SELECT 문 말고도 다른 예약어 안에서도 쓰일 수 있다.
🔥 두 번째 방법 (비교 연산자 사용)
SELECT birthMonth,
CASE
WHEN birthMonth <= 2 THEN N'겨울'
WHEN birthMonth <= 5 THEN N'봄'
WHEN birthMonth <= 8 THEN N'여름'
WHEN birthMonth <= 11 THEN N'가을'
ELSE N'겨울'
END
AS birthSEASON
FROM players;
이렇게도 쓸 수 있다. 결과는 첫 번째 코드와 동일.
🔥 NULL
SELECT birthMonth,
CASE birthMonth
WHEN 1 THEN N'겨울'
WHEN 2 THEN N'겨울'
WHEN 3 THEN N'봄'
WHEN 4 THEN N'봄'
WHEN 5 THEN N'봄'
END
AS birthSeason
FROM players;
만약 값이 6 이상이면 WHEN
에 해당하는 것이 없고 ELSE
문 또한 없기 때문에 NULL 값으로 출력이 된다.
SELECT birthMonth,
CASE
WHEN birthMonth <= 2 THEN N'겨울'
WHEN birthMonth <= 5 THEN N'봄'
WHEN birthMonth <= 8 THEN N'여름'
WHEN birthMonth <= 11 THEN N'가을'
WHEN birthMonth IS NULL THEN N'몰라요'
ELSE N'겨울'
END
AS birthSEASON
FROM players;
NULL 값 자체와 비교하는 것은 말이 되지 않는다고 배웠기 때문에 IS NULL
같은 것을 사용하여야 한다.
🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄
Leave a comment