RDBS/MYSQL

[MySQL]CASE문의 기본 사용법 및 사용 시 주의 사항

MoonSta 2023. 2. 6. 17:42

📌CASE문의 기본 사용법 및 사용 시 주의 사항

  MySQL을 사용하고 쿼리(Query) 구문을 작성하면서 때에 따라 다른 결과를 출력해야 하는 상황이 발생한다. 이러한 상황에서 자주 사용하는 방법이 CASE문이다. MYSQL 4.0 이상부터 CASE 함수를 지원하고 있다. 프로그래밍 언어에서 사용하는 if 문이나 switch 문과 비슷하다고 생각하면 이해하기가 쉬울 것이다. 또한 쿼리(Query)에서 처리하지 않고, 다른 레벨에서 처리도 가능하지만, 알아두고 적재적소에 사용하는 것 이 중요하다. 

 

 

📌CASE문의 기본 형식

CASE
    WHEN 1번조건 THEN 반환값1 
    WHEN 2번조건 THEN 반환값2  
    ELSE '반환값3'            
END

⛔기본 구조는 다음과 같다. 조회할 데이터 Row마다 해당하는 조건에 부합하는 반환 값이 출력될 것이다. Case문의 특징을 알아보자.

 

 

📌CASE문의 기본 특징

🔖WHEN, THEN은 한 쌍으로 사용

🔖다중으로 사용 가능 

🔖ELSE가 없고 위에 조건에 맞는 값이 없다면 NULL 반환

 

 

📌예제 테이블 생성 및 데이터 추가

#세변의 길이가 같은 경우 정삼각형임을 판단하는 예제

CREATE TABLE shapeChk(
   shape_id INT NOT NUULL AUTO_INCREMENT,
   firstLine INT,
   secondLine Int,
   lastLine INT,
   PRIMARY KEY(shape_id)
);

INSERT INTO shapeChk(firstLine, secondLine, lastLine) VALUES(10, 13, 36)
INSERT INTO shapeChk(firstLine, secondLine, lastLine) VALUES(5, 8, 11)
INSERT INTO shapeChk(firstLine, secondLine, lastLine) VALUES(3, 3, 3)


SELECT * FROM shapeChk;

 

 

📌조회 결과

shape_id firstLine secondLine lastLine
1 10 13 36
2 5 8 11
3 3 3 3

 

 

📌주의 사항

 사실 이 부분이 제가 이 글을 포스팅하게 된 이유입니다. WHEN-THEN 구문을 반복하여 여러 경우를 작성하고 조회해 보았지만, 반환되어야 할 값이 다른 값을 반환하고 있었습니다. 그 이유를 찾아본 결과 조회 데이터가 다수의 경우에서 True를 반환하고 있었고 그 결과 가장 상위에 있는 조건에 반환 값을 조회하고 있었습니다. 따라서 조건절을 작성할 때는 1개 이상의 경우를 만족하지 않도록 유념하여 작성해야 합니다.