MySQL에서 테이블에 저장된 빈 문자열('')을 특정 값으로 교체해야 하는 경우가 종종 있습니다. 이때 IF() 함수를 활용하면 간단하게 처리할 수 있습니다. 이번 글에서는 예제를 통해 빈 값을 원하는 값으로 대체하는 방법을 단계별로 살펴보겠습니다.
1. 예제 테이블 생성
먼저 데모용 테이블을 생성합니다.
mysql> create table DemoTable837(Name varchar(100));
Query OK, 0 rows affected (0.53 sec)
2. 샘플 데이터 삽입
INSERT 명령을 사용하여 이름 값과 함께 의도적으로 빈 문자열('')도 함께 입력합니다.
mysql> insert into DemoTable837 values('Chris');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable837 values('');
Query OK, 1 row affected (0.23 sec)
mysql> insert into DemoTable837 values('Robert');
Query OK, 1 row affected (0.08 sec)
mysql> insert into DemoTable837 values('');
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable837 values('David');
Query OK, 1 row affected (1.13 sec)3. 현재 저장된 데이터 확인
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable837;
실행 결과는 다음과 같습니다. 두 번째와 네 번째 행이 빈 값인 것을 확인할 수 있습니다.
+--------+
| Name |
+--------+
| Chris |
| |
| Robert |
| |
| David |
+--------+
5 rows in set (0.00 sec)
4. IF() 함수로 빈 값을 특정 값으로 교체
빈 값을 'Adam'이라는 특정 값으로 교체하려면 아래와 같은 쿼리를 사용합니다. IF(조건, 참일 때 값, 거짓일 때 값) 구조로 동작하며, Name 컬럼이 빈 문자열이면 'Adam'을 반환하고 그렇지 않으면 원래 값을 그대로 반환합니다.
mysql> select if(Name='', 'Adam',Name) from DemoTable837;
실행 결과는 다음과 같습니다.
+--------------------------+
| if(Name='', 'Adam',Name) |
+--------------------------+
| Chris |
| Adam |
| Robert |
| Adam |
| David |
+--------------------------+
5 rows in set (0.00 sec)
참고: NULL 값과 빈 문자열의 차이
주의할 점은 위 방법은 빈 문자열('')만 처리한다는 것입니다. 만약 컬럼 값이 NULL이라면 IFNULL() 또는 COALESCE() 함수를 사용하는 것이 적절합니다. 두 경우를 모두 처리하려면 아래처럼 조건을 확장할 수도 있습니다.
mysql> select if(Name='' OR Name IS NULL, 'Adam', Name) from DemoTable837;
이처럼 MySQL의 조건 함수를 활용하면 조회 결과에서 빈 값을 손쉽게 원하는 기본값으로 대체하여 출력할 수 있습니다.