MySQL 문법 및 예제 정리 - IF, IFNULL, CASE, COALESCE
MySQL의 조건문 및 제어 흐름 함수 정리
MySQL에서는 조건문과 제어 흐름 함수를 통해 데이터를 조건에 맞게 처리하고, 복잡한 논리를 구현할 수 있습니다.
이를 사용하면 쿼리의 실행 흐름을 제어하고, 특정 조건에 따라 다른 값을 반환하거나 작업을 수행할 수 있습니다.
주요 조건문 및 제어 흐름 함수:
- IF: 단순한 조건문을 처리하며, 조건에 따라 다른 값을 반환합니다.
- IFNULL: 값이 NULL일 때, 지정된 기본 값을 반환합니다.
- NULLIF: 두 값이 같으면 NULL을 반환하고, 다르면 첫 번째 값을 반환합니다.
- CASE: 다중 조건문을 처리하며, 여러 조건에 따라 다른 값을 반환합니다.
- COALESCE: 여러 인자 중 첫 번째 NULL이 아닌 값을 반환합니다.
1. IF 함수
IF()
함수는 단순한 조건문을 처리하는 함수입니다.IF
는 주어진 조건이 참일 경우와 거짓일 경우 각각의 값을 반환합니다.
- 문법:
condition
: 평가할 조건value_if_true
: 조건이 참일 때 반환할 값value_if_false
: 조건이 거짓일 때 반환할 값
IF(condition, value_if_true, value_if_false)
- 예시:
# 설명: 직원의 `salary`가 5000보다 크면 `'High'`, 작거나 같으면 `'Low'`를 반환합니다.
SELECT employee_name,
IF(salary > 5000, 'High', 'Low') AS salary_level
FROM Employees;
2. IFNULL() 함수
IFNULL()
함수는 NULL 값 처리에 사용됩니다.- NULL 값이 있을 경우 대신 반환할 값을 지정할 수 있습니다.
- 문법:
expression
: 평가할 값value_if_null
:expression
이 NULL일 때 반환할 값
IFNULL(expression, value_if_null)
- 예시:
# 설명: `discount` 값이 **NULL**이면 **0**을 반환하고, 그렇지 않으면 원래 값을 반환합니다.
SELECT product_name,
IFNULL(discount, 0) AS discount
FROM Products;
3. NULLIF 함수
NULLIF()
함수는 두 개의 값이 동일할 때 NULL을 반환합니다.- 서로 다른 값이면 첫 번째 값을 그대로 반환합니다.
- 문법:
expression1
: 비교할 첫 번째 값expression2
: 비교할 두 번째 값
NULLIF(expression1, expression2)
- 예시:
# 설명: `delivery_time`이 `'00:00:00'`과 같으면 **NULL**을 반환하고, 그렇지 않으면 원래 값을 반환합니다.
SELECT order_id,
NULLIF(delivery_time, '00:00:00') AS delivery_time
FROM Orders;
4. CASE 표현식
CASE
는 여러 조건을 검사하여 조건에 맞는 값을 반환하는 다중 조건문입니다.- 이는
IF
함수보다 복잡한 조건을 처리하는 데 유용합니다. - 문법:
CASE WHEN 방식:
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
ELSE result_default
END
CASE 표현식 방식:
CASE expression
WHEN value1 THEN result1
WHEN value2 THEN result2
ELSE result_default
END
- 예시: CASE WHEN 방식
# 설명: `salary`가 7000보다 크면 `'A'`, 5000보다 크면 `'B'`, 그렇지 않으면 `'C'`를 반환합니다.
SELECT employee_name,
CASE
WHEN salary > 7000 THEN 'A'
WHEN salary > 5000 THEN 'B'
ELSE 'C'
END AS salary_grade
FROM Employees;
- 예시: CASE 표현식 방식
# 설명: `department_id`가 1이면 `'HR'`, 2이면 `'Engineering'`, 그 외에는 `'Other'`를 반환합니다.
SELECT employee_name,
CASE department_id
WHEN 1 THEN 'HR'
WHEN 2 THEN 'Engineering'
ELSE 'Other'
END AS department_name
FROM Employees;
5. COALESCE() 함수
COALESCE()
함수는 여러 인자 중 NULL이 아닌 첫 번째 값을 반환하는 함수입니다.- 이 함수는 여러 열 중 값이 있는 첫 번째 값을 반환할 때 유용합니다.
- 문법:
# `expression1, expression2, ..., expressionN`: NULL 여부를 확인할 여러 값을 나열합니다.
COALESCE(expression1, expression2, ..., expressionN)
- 예시:
# 설명: `phone_number`가 NULL이면 `mobile_number`를 반환하고, 그마저도 NULL이면 `'No contact'`을 반환합니다.
SELECT employee_id,
COALESCE(phone_number, mobile_number, 'No contact') AS contact_info
FROM Employees;
댓글남기기