DB/문법

MySQL Case 키워드

ssury94 2024. 11. 29. 15:37

조건이 2개정도라면? IF()함수

 

MySQL if() 함수

-- 데이터를 가공할때 Yes or No 2가지 상황에 대해서 처리하는 함수 if()-- books 테이블에서 페이지수가 300페이지 이상인 책은 '긴 책'이라고 하고,     그렇지 않으면 '짧은 책'이라고 하자. 컬럼이

maeilcoding.tistory.com

 

그런데 조건이 3개 이상이라면..?

엑셀이였다면 ifs()나 구버전에선 지저분해보이지만 if(if(if(...)))를 썼었는데 SQL문에서는 어떻게 사용할까?

 

 

-- stock_quantity가 0이상 50이하면 *,

-- 51이상이고 100 이하 **,

-- 101 이상이면 ***

-- 새로운 컬럼 stock을 만들어 보여주세요.

SELECT *,
	CASE
		when stock_quantity >=0 and stock_quantity <=50 then '*'
		WHEN stock_quantity >=51 and stock_quantity <=100 then '**'
		else '***'
	END as stock
from books b ;

CASE ~ END 까지가 하나의 컬럼이 됩니다.

이대로는 너무 길어지니 as 별칭을 붙여주면 한눈에 보기 더 좋겠죠.

 

Select *,
	case
		when 조건1 then 조건1 반환값
		when 조건2 then 조건2 반환값
		...(조건은 필요에 맞춰 더 많이 사용가능)
		else 모든 조건이 false일 경우의 반환값 (생략도 가능, 입력이 없을시 Null로 반환)
	end as 별칭컬럼
from 테이블이름 ;

 

* CASE는 SELECT, UPDATE, DELETE, 그리고 다양한 SQL 문에서 사용할 수 있습니다.