sql에서도 물론 if문, switch문같은 문법이 존재한다!
우리 야구 DB에서의 예시를 들자면 태어난 달인 birthmonth의 숫자에 따라 봄, 여름, 가을, 겨울로 분리할 때 사용할 수 있겠다.
SELECT *,
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'??몰라요'
-- ELSE문을 따로 안작성하면 ELSE에 해당되는 조건들은 결과가 NULL이됨.
END AS birthSeason
FROM players;
다음 코드와 같이 조건 변수에 해당하는 CASE 구절과 WHEN으로 값을 분기하는 방법이 있다. C언어 계열로 따지면 SWITCH문과 꽤나 유사하다. ELSE로 예외인 경우들을 처리하고(주석과 같이, ELSE가 없는데 예외인 값이 나오면 NULL로 나오니 ELSE를 작성하기를 권장한다.) END AS로 이를 추가적용할 열의 이름을 정해준다.
실제로도 코드를 적용하면 가장 오른쪽 열에 birthSeason으로 정상적으로 적용됨을 확인할 수 있다.
SELECT *,
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;
두번째 방법으론 전과 달리 CASE에 조건 변수를 넣지 않고 WHEN 절에 따로 조건을 넣어주는 방법이 있다. C언어 계열로 따지면 if-else문과 유사하다(흔히 예시로 풀어본 성적에 따른 ABCDE 분류와 같다!)