반응형
MySQL에서 데이터를 조건에 따라 다르게 처리하려면 반드시 알아야 할 것이 바로 IF 함수이다. IF()는 프로그래밍 언어의 if문과 비슷한 구조를 가지며, 조건식이 참인지 거짓인지에 따라 서로 다른 값을 반환하는 매우 유용한 제어 함수이다.

IF 함수 기본 문법
IF(조건식, 참일 때 반환값, 거짓일 때 반환값)
조건식이 TRUE면 두 번째 인자를 반환하고, 그렇지 않으면 세 번째 인자를 반환한다.
예제 1: 점수에 따른 합격 여부 표시
SELECT name, score,
IF(score >= 60, '합격', '불합격') AS 결과
FROM exam_result;
score가 60점 이상이면 '합격', 아니면 '불합격'을 반환한다.
IF 함수는 SELECT 문 어디서나 사용 가능
- SELECT 절에서 조건 분기 출력
- WHERE 절 내부의 조건 처리
- ORDER BY 절에서 정렬 조건 설정
- UPDATE 문에서 컬럼 값 조건 처리
- SET 절에서도 변수 제어 가능
예제 2: WHERE 절에서 사용
SELECT *
FROM orders
WHERE IF(status = 'cancel', FALSE, TRUE);
주문 상태가 cancel이면 결과에서 제외하고, 그 외는 포함하는 조건 처리다.
반응형
IF 함수는 중첩 사용도 가능
IF 문을 중첩하면 복잡한 조건 분기도 표현할 수 있다.
예제 3: 등급 매기기 (중첩 IF)
SELECT name, score,
IF(score >= 90, 'A',
IF(score >= 80, 'B',
IF(score >= 70, 'C', 'F'))) AS 등급
FROM students;
점수에 따라 A/B/C/F 등급을 반환하며, 실무에서 자주 쓰이는 패턴이다.
IF 함수 vs WHERE 조건 비교
IF()는 반환값을 선택할 때 쓰이고, WHERE은 행 자체의 필터링 조건이다.
예제 4: 할인율 계산
SELECT customer_id, amount,
IF(amount >= 50000, amount * 0.9, amount) AS 할인적용금액
FROM purchases;
금액이 크면 자동으로 할인을 적용하는 구조를 만들 수 있다.
실무 활용 팁
- 쿼리 결과를 보기 좋게 표현할 때 필수적이다.
- 가공 컬럼 생성 시 많이 사용되며, IF 없이 CASE문으로 바꿀 수도 있다.
- 조건 분기가 복잡해질수록 IF보다 CASE가 가독성에서 유리할 수 있다.
주의사항
- 문자열 조건은 '값' 형태로 반드시 따옴표를 써야 한다.
- NULL 비교 시에는 IS NULL, IS NOT NULL 구문이 더 적합하다.
- IF()는 첫 번째 인자가 논리값을 반환해야 한다. 수치 비교나 논리 연산자가 꼭 필요하다.
정리
- IF()는 SQL에서 조건에 따라 다른 값을 반환하는 제어 함수이다.
- SELECT, WHERE, ORDER BY 등 다양한 구문 안에서 자유롭게 사용된다.
- 실무에서는 등급 분류, 상태 표시, 금액 조건 처리 등에 자주 사용된다.
- 중첩 IF를 통해 여러 조건을 순차적으로 평가할 수 있지만 복잡하면 CASE문으로 바꾸는 것이 좋다.
참고 문서
https://dev.mysql.com/doc/refman/8.0/en/control-flow-functions.html#function_if
반응형
'DB' 카테고리의 다른 글
| [MySQL] CAST 함수로 데이터 형 변환하기 (0) | 2025.07.25 |
|---|---|
| [MySQL] CASE WHEN으로 다중 조건 처리하기 (1) | 2025.07.25 |
| [MySQL] NULLIF로 두 값 비교 후 조건 처리하기 (3) | 2025.07.25 |
| [MySQL] IFNULL로 NULL 값을 기본값으로 대체하기 (0) | 2025.07.25 |
| [MySQL] PI, RAND, SIGN 등 특수 수학 함수 모음 (3) | 2025.07.25 |
| [MySQL] RADIANS, DEGREES로 각도 변환하기 (0) | 2025.07.24 |
| [MySQL] ASIN, ACOS, ATAN 역삼각함수 활용법 (2) | 2025.07.24 |
| [MySQL] SIN, COS, TAN 삼각함수 완전 정리 📐 (1) | 2025.07.24 |