MySQL에서 IFNULL() 함수를 사용하면 NULL 값을 찾아 원하는 특정 값으로 대체할 수 있습니다. 이 함수는 첫 번째 인자가 NULL이 아니면 그 값을 그대로 반환하고, NULL이면 두 번째 인자로 지정한 값을 반환합니다.
예제 테이블 생성
먼저 실습용 테이블을 생성해 보겠습니다.
mysql> create table DemoTable1878
(
FirstName varchar(20)
);
Query OK, 0 rows affected (0.00 sec)데이터 삽입
insert 명령을 사용해 몇 개의 레코드를 삽입합니다. 일부러 NULL 값도 함께 넣어 보겠습니다.
mysql> insert into DemoTable1878 values('Chris');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1878 values(NULL);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1878 values('David');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1878 values(NULL);
Query OK, 1 row affected (0.00 sec)테이블 전체 조회
select 문으로 테이블의 모든 레코드를 확인합니다.
mysql> select * from DemoTable1878;
위 쿼리는 다음과 같은 결과를 출력합니다.
+-----------+ | FirstName | +-----------+ | Chris | | NULL | | David | | NULL | +-----------+ 4 rows in set (0.00 sec)
IFNULL() 함수 적용하기
이제 IFNULL() 함수를 사용해 NULL 값을 'Robert'라는 문자열로 대체해 보겠습니다.
mysql> select ifnull(FirstName,'Robert') from DemoTable1878;
실행 결과는 다음과 같습니다.
+----------------------------+ | ifnull(FirstName,'Robert') | +----------------------------+ | Chris | | Robert | | David | | Robert | +----------------------------+ 4 rows in set (0.00 sec)
결과 분석
출력 결과를 보면 원래 값이 있던 'Chris'와 'David'는 그대로 유지되고, NULL이었던 두 행은 'Robert'로 대체된 것을 확인할 수 있습니다.
참고: COALESCE() 함수
IFNULL() 외에도 COALESCE() 함수를 사용하면 같은 결과를 얻을 수 있습니다. COALESCE()는 여러 인자를 받을 수 있으며, NULL이 아닌 첫 번째 값을 반환합니다.
mysql> select coalesce(FirstName,'Robert') from DemoTable1878;
두 함수의 차이점은 IFNULL()은 인자를 정확히 2개만 받지만, COALESCE()는 2개 이상의 인자를 받아 순차적으로 검사한다는 점입니다. 단순히 하나의 대체 값만 필요하다면 IFNULL()이 더 간결하고 가독성이 좋습니다.