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 문에서 사용할 수 있습니다.