[MySQL입문] CASE

Date:     Updated:

카테고리:

태그:

인프런에 있는 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;

위 코드는 birthMonthbirthSeason 열을 출력하는 코드이다.

image

  • CASE + 값을 따질 열
  • WHEN + 값 : if(값)
  • THEN + 참이면 실행할 내용
  • ELSE : (C++ switch-casedefault 와 같음)

CASE birthMonth WHEN 3 은 if(birthMonth == 3) 과도 같다. THEN 은 이 if 문이 참일 때 실행하는 부분과도 같다.

  • C++ 에서의 switch-case 와는 달리 WHEN 에 해당되면 그 THEN 을 실행하고 바로 종료된다. if-else 처럼 !!
    • C++ 에서는 그 밑에도 다 실행되기 때문에 break가 필요함.
  • 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;

image

만약 값이 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 같은 것을 사용하여야 한다.



🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기

DB 카테고리 내 다른 글 보러가기

댓글 남기기