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

MySQL에서 NULL 값을 0으로 변환하는 방법 – IFNULL() 함수 완벽 가이드

MySQL에서 데이터를 조회할 때 컬럼 값이 NULL로 반환되는 경우가 종종 있습니다. 이러한 NULL 값을 화면에 표시하거나 계산에 활용할 때는 0과 같은 기본값으로 바꿔주는 것이 편리합니다. 이때 유용하게 사용할 수 있는 함수가 바로 IFNULL()입니다.

IFNULL() 함수란?

IFNULL(값, 대체값)은 첫 번째 인자가 NULL이 아니면 그 값을 그대로 반환하고, NULL이면 두 번째 인자로 지정한 대체값을 반환하는 MySQL 내장 함수입니다. 따라서 IFNULL(Value, 0)처럼 작성하면 NULL이 아닌 값은 원래 값이 출력되고, NULL인 값은 0으로 대체되어 조회됩니다.

1. 예제 테이블 생성

먼저 실습에 사용할 테이블을 생성해 보겠습니다.

mysql> create table DemoTable
-> (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Value int
-> );
Query OK, 0 rows affected (0.71 sec)

2. 샘플 데이터 삽입

INSERT 문을 사용해 일부러 NULL 값도 포함하여 레코드를 삽입합니다.

mysql> insert into DemoTable(Value) values(100);
Query OK, 1 row affected (0.18 sec)

mysql> insert into DemoTable(Value) values(140);
Query OK, 1 row affected (0.12 sec)

mysql> insert into DemoTable(Value) values(200);
Query OK, 1 row affected (0.26 sec)

mysql> insert into DemoTable(Value) values(450);
Query OK, 1 row affected (0.13 sec)

mysql> insert into DemoTable(Value) values(null);
Query OK, 1 row affected (0.15 sec)

mysql> insert into DemoTable(Value) values(90);
Query OK, 1 row affected (0.11 sec)

mysql> insert into DemoTable(Value) values(null);
Query OK, 1 row affected (0.10 sec)

3. 전체 데이터 확인

SELECT 문으로 테이블의 모든 레코드를 조회해 보면, Value 컬럼에 NULL 값이 포함되어 있는 것을 확인할 수 있습니다.

mysql> select *from DemoTable;

출력 결과

+----+-------+
| Id | Value |
+----+-------+
| 1 | 100 |
| 2 | 140 |
| 3 | 200 |
| 4 | 450 |
| 5 | NULL |
| 6 | 90 |
| 7 | NULL |
+----+-------+
7 rows in set (0.00 sec)

4. IFNULL()로 NULL을 0으로 변환하기

아래 쿼리는 IFNULL() 함수를 사용하여 NULL 값을 0으로 대체해 조회합니다. 별칭(Alias)을 지정하면 결과 컬럼명도 깔끔하게 유지할 수 있습니다.

mysql> select ifnull(Value,0) AS Value from DemoTable;

출력 결과

+-------+
| Value |
+-------+
| 100 |
| 140 |
| 200 |
| 450 |
| 0 |
| 90 |
| 0 |
+-------+
7 rows in set (0.00 sec)

실행 결과를 보면 기존에 NULL이었던 5번, 7번 레코드가 모두 0으로 표시된 것을 확인할 수 있습니다.

참고: COALESCE() 함수

MySQL에서는 COALESCE(Value, 0)를 사용해도 동일한 결과를 얻을 수 있습니다. COALESCE()는 인자 목록 중 NULL이 아닌 첫 번째 값을 반환하는 표준 SQL 함수이므로, 여러 개의 대체값을 순차적으로 검사해야 하는 경우에는 COALESCE()가 더 유연하게 활용됩니다.