데이터베이스

SQL (5) - CASE

monstro 2025. 2. 5. 16:14
728x90
반응형

이번 포스트에서는 다른 언어의 Switch - Case와 비슷SQL의 CASE 함수에 대해 알아보겠습니다.

 

1) 사용법

일반적인 Switch - Case의 문법은 다음과 같이 작성합니다.

swtich(대상)
	case 조건1:
    	로직
        break;
	case 조건2:
    	로직
        break;
	default:
    	로직
        break;

 

기본적인 로직대상에 한해case의 조건에 맞다면 해당하는 case의 로직을 수행하고

모든 case의 조건에 맞지 않는 대상default의 로직을 수행하게 되어 있습니다.

 

이제 SQL에서의 CASE 함수의 문법을 살펴보겠습니다.

SELECT *,
	CASE 대상
		WHEN 조건 THEN 로직
		ELSE 로직
	END AS 속성이름
FROM 테이블이름;

 

SQL에서 CASE는 위와 같이 작성합니다.

CASE인자로 넣어진 속성을 대상으로,

WHEN인자로 넣어진 조건과 일치하면 THEN에 맞는 로직을 적용하고

조건이 맞지 않는 대상ELSE에 맞는 로직을 적용합니다.

최종적으로 테이블에 END AS를 사용하여 로직이 적용 데이터를 갖고있는 새로운 속성추가합니다.

실제로 사용해보겠습니다.

 

2) 실제 사용

-- 기존의 데이터 테이블에 새로운 속성을 추가하고 기본값을 설정
SELECT *, 1 AS birthSeason
FROM players;

 

기존에 사용하던 데이터 테이블에 birthSeason이라는 속성을 추가하고 기본값을 1로 설정하겠습니다.

 

-- CASE 문법을 사용하여 태어난 달을 기전으로 birthSeason을 설정 1
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'알수없음'
	END As birthSeason
FROM players;

 

다음으로 CASE 문법을 사용하여 해당 birthSeason의 데이터들을 바꿔보겠습니다.

실행결과는 다음과 같습니다.

 

-- CASE 문법을 사용하여 태어난 달을 기전으로 birthSeason을 설정 2
SELECT *,
	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;

 

CASE 문법을 사용하여 데이터들을 바꿔보았지만, 문법이 매우 길고 복잡합니다. 

따라서 최종적으로 비교 연산자를 이용하여 CASE 문법을 사용해보겠습니다.

실행결과는 다음과 같습니다.

728x90
반응형

'데이터베이스' 카테고리의 다른 글

SQL (4) - DATETIME  (0) 2025.02.05
SQL (3) - 산술연산과 문자열  (1) 2025.02.04
SQL (2) - ORDER BY문  (0) 2025.02.04
SQL (1) - SELECT문  (0) 2025.02.04