MySQL에서 데이터를 조회하다 보면 NULL 값 때문에 곤란한 경우가 자주 발생합니다. 특히 숫자 연산이나 통계 집계 시 NULL은 예상치 못한 오류나 잘못된 결과를 초래할 수 있습니다. 이럴 때 IFNULL() 또는 COALESCE() 함수를 사용하면 NULL 값을 손쉽게 0으로 변환할 수 있습니다.
1. NULL을 0으로 변환하는 기본 문법
IFNULL 함수를 사용하는 방법은 다음과 같습니다.
SELECT IFNULL(yourColumnName, 0) AS anyAliasName FROM yourTableName;
COALESCE 함수를 사용하는 방법도 거의 동일합니다.
SELECT COALESCE(yourColumnName, 0) AS anyAliasName FROM yourTableName;
두 함수 모두 첫 번째 인자가 NULL이면 두 번째 인자로 지정한 대체값(여기서는 0)을 반환합니다. 참고로 COALESCE()는 여러 개의 인자를 받을 수 있어, 인자 목록 중 처음으로 NULL이 아닌 값을 반환하는 더 범용적인 SQL 표준 함수입니다.
2. 실습용 테이블 생성
먼저 예제에 사용할 테이블을 만들어 보겠습니다. 아래 쿼리로 테이블을 생성합니다.
mysql> create table convertNullToZeroDemo
-> (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Name varchar(20),
-> Salary int
-> );
Query OK, 0 rows affected (1.28 sec)
샘플 데이터 삽입
INSERT 명령을 사용해 몇 개의 레코드를 삽입합니다. 일부러 Salary 컬럼에 NULL 값을 포함시켰습니다.
mysql> insert into convertNullToZeroDemo(Name,Salary) values('John',NULL);
Query OK, 1 row affected (0.20 sec)
mysql> insert into convertNullToZeroDemo(Name,Salary) values('Carol',5610);
Query OK, 1 row affected (0.10 sec)
mysql> insert into convertNullToZeroDemo(Name,Salary) values('Bob',NULL);
Query OK, 1 row affected (0.15 sec)
mysql> insert into convertNullToZeroDemo(Name,Salary) values('David',NULL);
Query OK, 1 row affected (0.12 sec)
저장된 데이터 확인
SELECT 문으로 테이블의 전체 레코드를 조회해 보겠습니다.
mysql> select *from convertNullToZeroDemo;
실행 결과는 다음과 같습니다.
+----+-------+--------+ | Id | Name | Salary | +----+-------+--------+ | 1 | John | NULL | | 2 | Carol | 5610 | | 3 | Bob | NULL | | 4 | David | NULL | +----+-------+--------+ 4 rows in set (0.05 sec)
John, Bob, David의 Salary 값이 NULL로 저장되어 있는 것을 확인할 수 있습니다.
3. IFNULL 함수로 NULL을 0으로 변환하기
첫 번째 방법으로 IFNULL() 함수를 사용해 NULL을 0으로 변환해 보겠습니다.
mysql> select IFNULL(Salary,0) as `CONVERT_NULL_TO_0` from convertNullToZeroDemo;
실행 결과는 다음과 같습니다.
+--------------------+ | CONVERT_NULL_TO_0 | +--------------------+ | 0 | | 5610 | | 0 | | 0 | +--------------------+ 4 rows in set (0.05 sec)
기존에 NULL이었던 값들이 모두 0으로 출력된 것을 볼 수 있습니다.
4. COALESCE 함수로 NULL을 0으로 변환하기
두 번째 방법으로 COALESCE() 함수를 사용해 보겠습니다.
mysql> select coalesce(Salary,0) as `CONVERT_NULL_TO_0` from convertNullToZeroDemo;
실행 결과는 다음과 같습니다.
+--------------------+ | CONVERT_NULL_TO_0 | +--------------------+ | 0 | | 5610 | | 0 | | 0 | +--------------------+ 4 rows in set (0.00 sec)
마무리 정리
지금까지 MySQL에서 NULL을 0으로 변환하는 두 가지 방법을 살펴보았습니다.
- IFNULL(컬럼명, 0): MySQL 전용 함수로, 문법이 간단하고 직관적입니다.
- COALESCE(컬럼명, 0): SQL 표준 함수로, 여러 인자 중 첫 번째 NULL이 아닌 값을 반환합니다.
단순히 하나의 컬럼만 처리한다면 IFNULL()이 편리하고, 여러 컬럼을 우선순위에 따라 처리해야 한다면 COALESCE()가 유용합니다. 상황에 맞게 적절히 활용하면 NULL로 인한 데이터 처리 오류를 효과적으로 방지할 수 있습니다.