반응형
💅 SQL 입문
지난 시간에는 DATETIME을 이용하여 시간, 시간 연산, 시간 범위 등 시간과 관련된 다양한 내용에 대해서 알아보았다. 오늘은 CASE문에 대해서 학습해 볼 것이다.
🧑⚖️ 첫 번째 방법
C#에서 사용하는 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 을 실행하고 바로 종료된다. 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;
만약 값이 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 을 이용하여 사용하여야 한다.
반응형
'공부 > 인프런 - Rookiss' 카테고리의 다른 글
Part 5-2-8. SQL 입문 : 연습문제 (0) | 2024.02.08 |
---|---|
Part 5-2-7. SQL 입문 : 집계함수 (COUNT, SUM, AVG, MAX, MIN, DISTINCT) (1) | 2024.02.05 |
Part 5-2-5. SQL 입문 : DATETIME (1) | 2024.02.05 |
Part 5-2-4. SQL 입문 : 수치와 문자열 (1) | 2024.01.25 |
Part 5-2-3. SQL 입문 : ORDER BY, TOP, OFFSET (1) | 2024.01.24 |