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

MySQL에서 NULL을 0으로 변환하는 방법: IFNULL과 COALESCE 완벽 가이드

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로 인한 데이터 처리 오류를 효과적으로 방지할 수 있습니다.