본문 바로가기

MySQL

MySQL에서 IF와 CASE 활용하기

MySQL에서 조건적 로직을 구현하기 위해 IF 함수와 CASE 키워드를 사용할 수 있습니다. 이 두 가지 방법은 각각 다른 용도와 문법을 가지고 있으므로, 각기 어떤 상황에서 사용하는지 이해하는 것이 중요합니다.

 

IF 함수

정의와 사용법

MySQL의 IF 함수는 조건에 따라 두 가지 값 중 하나를 반환하는 함수입니다.

 

IF(condition, value_if_true, value_if_false)

 

  • condition: 평가할 조건을 나타내는 표현식
  • value_if_true: 조건이 참일 때 반환할 값
  • value_if_false: 조건이 거짓일 때 반환할 값

 

예제

SELECT IF(500 < 1000, 'YES', 'NO');

 

이 쿼리는 조건 500 < 1000이 참이므로 'YES'를 반환합니다.

 

SELECT name, IF(age >= 18, age, '미성년자') as age_status

FROM users;

 

이 쿼리는 사용자 테이블에서 이름과 나이를 반환하는데, 나이가 18살 이상이면 그대로 반환하고, 18살 미만이면 '미성년자'라는 문자열을 반환합니다.

 

CASE 키워드

정의와 사용법

CASE 키워드는 여러 개의 조건을 평가하여 해당하는 값들을 반환할 수 있습니다.

 

CASE

WHEN condition1 THEN result1

WHEN condition2 THEN result2 ...

 ELSE resultN

 END

 

  • condition: 평가할 조건을 나타내는 표현식
  • result: 조건이 참일 때 반환할 값
  • ELSE: 모든 조건이 거짓일 때 반환할 기본 값

예제

 

SELECT OrderID, Quantity,

             CASE WHEN Quantity > 10 THEN 'MORE'

                        WHEN Quantity = 10 THEN 'EQUAL' ELSE 'LESS'

             END AS quantity_status

FROM OrderDetails;

 

이 쿼리는 주문량에 따라 'MORE', 'EQUAL', 또는 'LESS'를 반환합니다.

 

차이점과 사용 시기

IF 함수 vs CASE 키워드

  • IF 함수:
    • 단순한 조건에 기반하여 두 가지 값 중 하나를 반환합니다.
    • 문법이 간단하고, 한 번에 하나의 조건만 평가할 때 적합합니다.
    • 예: IF(age >= 18, '성인', '미성년자')

CASE 키워드:

  • 여러 개의 조건을 평가하여 해당하는 값들을 반환할 수 있습니다.
  • 복잡한 조건이나 여러 개의 경우를 처리할 때 적합합니다.
  • 예: CASE WHEN age >= 18 THEN '성인' WHEN age >= 13 THEN '청소년' ELSE '어린이' END

 

]

요약

  • IF 함수: 단순한 조건에 기반하여 두 가지 값 중 하나를 반환하는 함수. 한 번에 하나의 조건만 평가할 때 적합합니다.
  • CASE 키워드: 여러 개의 조건을 평가하여 해당하는 값들을 반환할 수 있는 키워드. 복잡한 조건이나 여러 개의 경우를 처리할 때 적합합니다.

이 두 가지 방법을 적절하게 사용하면, MySQL에서 조건적 로직을 효율적으로 구현할 수 있습니다.