Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL IFNULL() 함수로 NULL 값 대체하기 – NULL 컬럼에 특정 값 넣는 방법

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()이 더 간결하고 가독성이 좋습니다.