MySQL에서 CASE 문으로 빈 값에 사용자 지정 이름 표시하기
데이터베이스를 다루다 보면 컬럼 값이 NULL이거나 빈 문자열('')인 레코드를 자주 만나게 됩니다. 이런 경우 화면에 아무것도 표시되지 않아 사용자에게 혼란을 줄 수 있습니다. MySQL에서는 CASE WHEN 문을 활용하면 빈 값 대신 원하는 사용자 지정 이름을 손쉽게 표시할 수 있습니다.
이번 글에서는 실제 예제를 통해 빈 값을 다른 이름으로 치환하여 출력하는 방법을 단계별로 살펴보겠습니다.
1. 예제 테이블 생성
먼저 테스트용 테이블을 생성합니다. 여기서는 이름을 저장할 Name 컬럼 하나만 가진 간단한 테이블을 만들어 보겠습니다.
mysql> create table DemoTable
-> (
-> Name varchar(20)
-> );
Query OK, 0 rows affected (0.62 sec)
2. 샘플 데이터 삽입
다음으로 INSERT 명령을 사용해 몇 개의 레코드를 삽입합니다. 의도적으로 빈 문자열('')인 레코드도 함께 넣어 상황을 재현합니다.
mysql> insert into DemoTable values('Chris');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values('');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('David');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values('');
Query OK, 1 row affected (0.11 sec)3. 현재 데이터 확인
SELECT 문으로 테이블의 전체 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다. 두 번째와 네 번째 행처럼 값이 비어 있는 레코드가 존재합니다.
+-------+
| Name |
+-------+
| Chris |
| |
| David |
| |
+-------+
4 rows in set (0.00 sec)
4. CASE 문으로 빈 값 치환하기
이제 핵심인 쿼리입니다. CASE 문과 함께 IFNULL(), TRIM() 함수를 조합하면 NULL 값과 공백 문자열을 모두 처리할 수 있습니다.
- IFNULL(Name, ''): 값이 NULL일 경우 빈 문자열로 변환합니다.
- TRIM(...): 앞뒤 공백을 제거하여 순수하게 빈 문자열인지 정확히 판별합니다.
- CASE ... WHEN '' THEN ...: 빈 문자열이면 'Carol Taylor'라는 사용자 지정 이름을 반환하고, 그렇지 않으면 원래 값을 그대로 출력합니다.
mysql> select case trim(ifnull(Name,''))
-> when '' then 'Carol Taylor'
-> else
-> Name
-> end as Name
-> from DemoTable;
5. 실행 결과 확인
쿼리 실행 결과는 다음과 같습니다. 기존에 비어 있던 두 레코드가 'Carol Taylor'로 대체되어 표시된 것을 확인할 수 있습니다.
+--------------+
| Name |
+--------------+
| Chris |
| Carol Taylor |
| David |
| Carol Taylor |
+--------------+
4 rows in set (0.03 sec)
마무리
이처럼 MySQL의 CASE WHEN 문은 조건에 따라 출력값을 유연하게 변경할 수 있는 강력한 도구입니다. IFNULL()과 TRIM()을 함께 사용하면 NULL과 빈 문자열까지 한 번에 처리할 수 있어, 리포트나 목록 화면에서 빈 값으로 인한 어색한 UI를 방지하는 데 매우 유용합니다. 필요에 따라 'Carol Taylor' 대신 'N/A', '미지정' 등 원하는 문구로 자유롭게 바꿔 사용하시기 바랍니다.