MySQL에서 IFNULL() 함수를 사용하면 NULL 값을 원하는 값(예: 0)으로 대체하여 조회할 수 있습니다. 이 함수는 첫 번째 인자가 NULL이 아니면 그 값을 그대로 반환하고, NULL이면 두 번째 인자로 지정한 대체 값을 반환합니다.
1. 테이블 생성하기
먼저 예제에 사용할 테이블을 생성합니다.
mysql> create table DemoTable (Value int); Query OK, 0 rows affected (1.02 sec)
2. 데이터 삽입하기
insert 명령을 사용하여 NULL 값과 일반 숫자가 섞인 레코드를 삽입합니다.
mysql> insert into DemoTable values(NULL); Query OK, 1 row affected (0.13 sec) mysql> insert into DemoTable values(10); Query OK, 1 row affected (0.11 sec) mysql> insert into DemoTable values(20); Query OK, 1 row affected (0.17 sec) mysql> insert into DemoTable values(NULL); Query OK, 1 row affected (0.15 sec) mysql> insert into DemoTable values(30); Query OK, 1 row affected (0.13 sec)
3. 전체 레코드 조회하기
select 문을 사용해 테이블의 모든 레코드를 확인합니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+-------+ | Value | +-------+ | NULL | | 10 | | 20 | | NULL | | 30 | +-------+ 5 rows in set (0.00 sec)
4. IFNULL()로 NULL을 0으로 변환하기
이제 select 문에서 IFNULL() 함수를 사용하면, 기존 열은 그대로 유지되면서 NULL이 0으로 변환된 값이 새 열에 함께 표시됩니다.
mysql> select Value,IFNULL(Value,0) from DemoTable;
실행 결과는 다음과 같습니다.
+-------+-----------------+ | Value | IFNULL(Value,0) | +-------+-----------------+ | NULL | 0 | | 10 | 10 | | 20 | 20 | | NULL | 0 | | 30 | 30 | +-------+-----------------+ 5 rows in set (0.00 sec)
위 결과를 보면 Value 열의 NULL 값이 두 번째 열에서 모두 0으로 변환된 것을 확인할 수 있습니다. 참고로 별칭(alias)을 사용하면 출력 열 이름을 더 깔끔하게 표현할 수도 있습니다. 예를 들어 select Value, IFNULL(Value,0) AS NewValue from DemoTable;처럼 작성하면 두 번째 열의 이름이 NewValue로 표시됩니다.