MySQL에서 데이터를 조회할 때 컬럼에 NULL 값이 포함되어 있으면 결과의 가독성이 떨어질 수 있습니다. 이번 글에서는 CASE 문을 사용해 NULL 값을 원하는 사용자 정의 값(예: 'UNKNOWN NAME')으로 대체하는 방법을 단계별로 살펴보겠습니다.
1. 테이블 생성하기
먼저 예제에 사용할 테이블을 생성합니다.
mysql> create table DemoTable
(
FirstName varchar(20)
);
Query OK, 0 rows affected (1.15 sec)
2. 샘플 데이터 삽입하기
insert 명령어로 실제 이름 값과 함께 의도적으로 NULL 값도 삽입합니다.
mysql> insert into DemoTable values('John');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values(NULL);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('Adam');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values(NULL);
Query OK, 1 row affected (0.09 sec)
3. 저장된 데이터 확인하기
select 문으로 테이블의 모든 레코드를 조회합니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+-----------+ | FirstName | +-----------+ | John | | NULL | | Adam | | NULL | +-----------+ 4 rows in set (0.00 sec)
출력 결과를 보면 FirstName 컬럼에 NULL 값이 두 개 포함되어 있는 것을 확인할 수 있습니다.
4. CASE 문으로 NULL 값 대체하기
이제 CASE 문을 사용해 NULL 값을 'UNKNOWN NAME'으로 바꿔보겠습니다.
mysql> select case when FirstName is NULL then 'UNKNOWN NAME' else FirstName end AS FirstName from DemoTable;
실행 결과:
+--------------+ | FirstName | +--------------+ | John | | UNKNOWN NAME | | Adam | | UNKNOWN NAME | +--------------+ 4 rows in set (0.00 sec)
case when FirstName is NULL then 'UNKNOWN NAME' else FirstName end 구문은 FirstName이 NULL일 경우 'UNKNOWN NAME'을 반환하고, NULL이 아니면 원래 값을 그대로 반환합니다. 덕분에 NULL 값이 모두 지정한 문자열로 깔끔하게 표시됩니다.
5. IFNULL() 함수로 동일한 결과 얻기
CASE 문 외에도 MySQL에서 기본 제공하는 IFNULL() 함수를 사용하면 더 간결하게 같은 결과를 얻을 수 있습니다.
mysql> select IFNULL(FirstName,'UNKNOWN NAME') AS FirstName from DemoTable;
실행 결과:
+--------------+ | FirstName | +--------------+ | John | | UNKNOWN NAME | | Adam | | UNKNOWN NAME | +--------------+ 4 rows in set (0.00 sec)
IFNULL(FirstName, 'UNKNOWN NAME')은 첫 번째 인자가 NULL이면 두 번째 인자를, NULL이 아니면 첫 번째 인자를 그대로 반환합니다. 단순히 NULL만 다른 값으로 바꾸면 되는 상황이라면 IFNULL()이 코드를 더 짧고 읽기 쉽게 만들어 줍니다.
마무리
NULL 값을 사용자 정의 값으로 대체하는 방법은 크게 두 가지로 정리할 수 있습니다.
- CASE 문: 조건이 여러 개이거나 복잡한 분기 로직이 필요할 때 유용합니다.
- IFNULL(): NULL만 단순히 다른 값으로 바꾸면 될 때 간편하게 사용할 수 있습니다.
상황에 맞는 방법을 선택하면 쿼리 결과의 가독성을 크게 높일 수 있으며, 리포트나 화면 출력 시 사용자에게 훨씬 친절한 데이터를 제공할 수 있습니다.