데이터로그😎

[SQL기본] 조건문: IF v CASE WHEN 본문

# 1. 언어/# 1.1. SQL

[SQL기본] 조건문: IF v CASE WHEN

지지킴 2023. 9. 5. 21:09

MySQL에서 조건문은 데이터 분류, 가공, 정제 등의 목적으로 자주 사용됩니다. 대표적인 방식으로는 IF() 함수CASE WHEN 구문이 있으며, 두 방식은 구조와 기능 면에서 차이를 보입니다. 이번에는 이 두 조건문을 명확히 비교하고, 각각의 작동 방식과 실전 예시까지 함께 살펴보겠습니다.


✅ 공통점

  • IF와 CASE WHEN은 모두 조건에 따라 서로 다른 값을 반환하는 데 사용됩니다.
  • SELECT, WHERE, ORDER BY 등 다양한 SQL 문장에서 활용 가능합니다.
  • 데이터 전처리, 분류, 출력값 제어 등에 유용합니다.

🔍 차이점 비교

항목IF() 함수CASE WHEN 구문
항목 IF() 함수 CASE WHEN 구문
문법 형태 함수(Function) 구문(Syntax)
조건 처리 방식 단일 조건 처리 (2분기) 다중 조건 처리 (n분기)
가독성 간단한 조건일 때 적합 복잡한 조건일수록 가독성이 높음
유연성 제한적 조건별 결과 처리에 매우 유연함
평가 방식 조건 한 개만 판단 조건을 위에서부터 순차적으로 판단

 


⚙️ 작동 방식

1. IF() 함수

IF(condition, value_if_true, value_if_false)

 

작동 순서:

  1. condition을 평가
  2. 결과가 TRUE이면 value_if_true 반환
  3. 결과가 FALSE 또는 NULL이면 value_if_false 반환

특징:

  • 중첩 사용은 가능하지만 가독성이 떨어짐
  • 단일 조건 판단에 적합

2. CASE WHEN 구문

CASE
  WHEN condition1 THEN result1
  WHEN condition2 THEN result2
  ...
  ELSE default_result
END
 

 

작동 순서:

  1. 각 WHEN 조건을 위에서부터 차례로 평가
  2. 가장 먼저 참이 되는 조건의 result를 반환
  3. 조건을 만족하지 않으면 ELSE 결과 반환 (없으면 NULL)

특징:

  • 다수의 조건 분기 처리에 적합
  • 조건 우선순위가 중요한 로직에 활용 가능
  • ELSE 생략 시 기본 반환값은 NULL

🧪 예시: 점수에 따른 등급 분류

1. IF() 사용 예시

SELECT
  name,
  IF(score >= 90, 'A',
    IF(score >= 80, 'B',
      IF(score >= 70, 'C', 'F')
    )
  ) AS grade
FROM students;
 

 

2. CASE WHEN 사용 예시

SELECT
  name,
  CASE
    WHEN score >= 90 THEN 'A'
    WHEN score >= 80 THEN 'B'
    WHEN score >= 70 THEN 'C'
    ELSE 'F'
  END AS grade
FROM students;
 

동일한 결과를 출력하지만, CASE WHEN은 구조적으로 더 명확하며 확장성도 높습니다.


📝 정리

IF와 CASE WHEN은 단순히 기능적 대체재가 아니라, 상황에 따라 선택해야 하는 도구입니다. 조건이 단순하다면 IF로 간결하게, 조건이 많고 복잡하다면 CASE WHEN으로 명확하게 구성하는 것이 좋습니다!

 

비교 항목 IF 함수 CASE WHEN 구문
조건 분기 수 2개(단일 조건) 여러 개(n개 이상 가능)
복잡한 조건 부적합 적합
가독성 낮음 (중첩 시 복잡도 ↑) 높음
활용 권장 상황 간단한 조건 판단 복잡한 로직 또는 우선순위 판단 시

 

'# 1. 언어 > # 1.1. SQL' 카테고리의 다른 글

서브 쿼리  (0) 2023.09.06
ERD 표기법  (0) 2023.09.06
python - mysql 연결  (0) 2023.09.06
[SQL기본] JOIN  (1) 2023.09.05
[SQL기본] Basic Query  (0) 2023.09.05