MySQL의 IF() 함수는 조건을 평가한 후, 조건이 참이면 두 번째 인자를, 거짓이면 세 번째 인자를 반환합니다. 이를 활용하면 'Yes' 또는 'No' 같은 단순한 값 대신 원하는 사용자 정의 메시지를 손쉽게 출력할 수 있습니다.
1. 예제 테이블 생성
먼저 데모용 테이블을 생성해 보겠습니다.
mysql> create table DemoTable1850
(
OrderStatus varchar(20)
);
Query OK, 0 rows affected (0.00 sec)2. 샘플 데이터 삽입
INSERT 명령을 사용하여 테이블에 레코드를 추가합니다.
mysql> insert into DemoTable1850 values('Yes');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1850 values('No');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1850 values('Yes');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1850 values('Yes');
Query OK, 1 row affected (0.00 sec)3. 저장된 데이터 확인
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select * from DemoTable1850;
위 쿼리는 다음과 같은 결과를 출력합니다.
+-------------+ | OrderStatus | +-------------+ | Yes | | No | | Yes | | Yes | +-------------+ 4 rows in set (0.00 sec)
4. IF() 함수로 사용자 정의 메시지 출력하기
이제 IF() 함수를 적용하여 조건에 따라 맞춤 메시지를 표시하는 쿼리를 작성해 보겠습니다. OrderStatus 값이 'Yes'이면 'Order has been placed(주문 완료)'를, 그렇지 않으면 'Failed(실패)'를 반환하도록 설정했습니다.
mysql> select if(OrderStatus='Yes','Order has been placed','Failed') as Status from DemoTable1850;
실행 결과는 다음과 같습니다.
+-----------------------+ | Status | +-----------------------+ | Order has been placed | | Failed | | Order has been placed | | Order has been placed | +-----------------------+ 4 rows in set (0.00 sec)
정리
위 예제에서 확인할 수 있듯이, MySQL의 IF() 함수는 IF(조건식, 참일 때 값, 거짓일 때 값) 형태로 사용되며, 별도의 CASE 문 없이 간단한 조건 분기 결과를 바로 조회할 수 있습니다. AS 키워드를 사용해 별칭(Alias)을 지정하면 결과 컬럼명도 깔끔하게 표시할 수 있어 실무에서 가독성 있는 리포트를 만들 때 유용합니다.