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

MySQL에서 NULL 값을 0으로 변환하는 방법 – CASE 문 완벽 가이드

MySQL에서 데이터를 조회할 때 NULL 값이 포함된 레코드를 0으로 변환해야 하는 경우가 자주 발생합니다. 예를 들어, 가격 정보가 비어 있는 상품 데이터를 집계하거나 화면에 표시할 때 NULL 대신 0을 보여주는 것이 더 자연스러울 수 있습니다.

이럴 때 가장 대표적으로 사용되는 방법이 바로 CASE 문입니다. 이 글에서는 실제 예제를 통해 NULL 값을 새로운 열에 0으로 반환하는 방법을 단계별로 살펴보겠습니다.

1. 테스트용 테이블 생성하기

먼저 예제에 사용할 테이블을 생성합니다. 아래 쿼리는 정수형 Price 열 하나만 가진 간단한 테이블을 만듭니다.

mysql> create table DemoTable703 (Price int);
Query OK, 0 rows affected (0.46 sec)

2. 샘플 데이터 삽입하기

다음으로 INSERT 명령어를 사용해 일반 숫자와 함께 NULL 값도 포함한 레코드를 여러 개 삽입합니다.

mysql> insert into DemoTable703 values(102);
Query OK, 1 row affected (0.27 sec)
mysql> insert into DemoTable703 values(null);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable703 values(0);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable703 values(500);
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable703 values(100);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable703 values(null);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable703 values(2340);
Query OK, 1 row affected (0.14 sec)

3. 현재 저장된 레코드 확인하기

SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select *from DemoTable703;

실행 결과는 다음과 같습니다. 두 번째와 여섯 번째 행에서 NULL 값이 그대로 출력되는 것을 확인할 수 있습니다.

+-------+
| Price |
+-------+
| 102 |
| NULL |
| 0 |
| 500 |
| 100 |
| NULL |
| 2340 |
+-------+
7 rows in set (0.00 sec)

4. CASE 문으로 NULL을 0으로 변환하기

이제 핵심인 CASE 문을 적용해 보겠습니다. 조건식 Price IS NULL이 참이면 0을 반환하고, 그렇지 않으면 원래의 Price 값을 그대로 반환합니다. 결과는 AS Result로 지정한 별칭을 가진 새로운 열에 출력됩니다.

mysql> select Price, case When Price IS NULL Then 0 else Price END AS Result from DemoTable703;

실행 결과는 다음과 같습니다.

+-------+--------+
| Price | Result |
+-------+--------+
| 102 | 102 |
| NULL | 0 |
| 0 | 0 |
| 500 | 500 |
| 100 | 100 |
| NULL | 0 |
| 2340 | 2340 |
+-------+--------+
7 rows in set (0.00 sec)

출력 결과를 보면 원본 Price 열은 그대로 유지되고, 새로 추가된 Result 열에서는 NULL이었던 값들이 모두 0으로 변환되어 표시됩니다. 참고로 세 번째 행처럼 원래부터 0이었던 값도 동일하게 0으로 출력되므로, NULL과 0을 구분해야 하는 경우에는 별도의 처리가 필요합니다.

5. 참고: IFNULL과 COALESCE 함수

CASE 문 외에도 MySQL에서는 같은 작업을 더 간결하게 수행할 수 있는 내장 함수를 제공합니다.

  • IFNULL(Price, 0): 첫 번째 인자가 NULL이면 두 번째 인자를 반환합니다.
  • COALESCE(Price, 0): 인자 목록 중 NULL이 아닌 첫 번째 값을 반환합니다.
mysql> select Price, IFNULL(Price, 0) AS Result from DemoTable703;
mysql> select Price, COALESCE(Price, 0) AS Result from DemoTable703;

두 함수 모두 위의 CASE 문과 동일한 결과를 반환하며, 단순한 NULL 치환 작업이라면 코드가 더 짧고 가독성이 좋아 실무에서 널리 사용됩니다. 반면 여러 조건을 조합해야 하는 복잡한 로직에는 CASE 문이 더 유연합니다.

마무리

지금까지 MySQL에서 NULL 값을 0으로 변환해 새로운 열에 반환하는 방법을 알아보았습니다. CASE 문을 사용하면 조건에 따라 유연하게 값을 처리할 수 있고, IFNULL 또는 COALESCE 함수를 활용하면 더욱 간단하게 해결할 수 있습니다. 상황에 맞는 방법을 선택해 데이터 조회 결과를 깔끔하게 정리해 보시기 바랍니다.