MySQL에서 빈 값(NULL)이 있는 행에 기본값을 지정하려면 COALESCE() 함수를 활용하면 됩니다. COALESCE()는 인수로 전달된 값 중 첫 번째로 NULL이 아닌 값을 반환하는 함수로, 이를 이용하면 NULL 데이터를 원하는 기본값으로 대체하여 조회할 수 있습니다.
1. 테이블 생성
먼저 예제로 사용할 테이블을 생성합니다.
mysql> create table DemoTable1863
(
FirstName varchar(20)
);
Query OK, 0 rows affected (0.00 sec)2. 데이터 삽입
INSERT 명령어를 사용해 이름과 NULL 값을 번갈아 입력합니다.
mysql> insert into DemoTable1863 values('Chris');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1863 values(NULL);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1863 values('David');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1863 values(NULL);
Query OK, 1 row affected (0.00 sec)3. 전체 데이터 확인
SELECT 문으로 테이블의 모든 레코드를 조회합니다.
mysql> select * from DemoTable1863;
실행 결과는 다음과 같습니다.
+-----------+ | FirstName | +-----------+ | Chris | | NULL | | David | | NULL | +-----------+ 4 rows in set (0.00 sec)
4. COALESCE()로 기본값 설정하기
다음은 NULL인 행에 'UNKNOWN NAME'이라는 기본값을 적용하는 쿼리입니다.
mysql> select coalesce(FirstName,'UNKNOWN NAME') from DemoTable1863;
결과를 보면 NULL 값이 모두 'UNKNOWN NAME'으로 대체되어 출력됩니다.
+------------------------------------+ | coalesce(FirstName,'UNKNOWN NAME') | +------------------------------------+ | Chris | | UNKNOWN NAME | | David | | UNKNOWN NAME | +------------------------------------+ 4 rows in set (0.00 sec)
COALESCE() 함수의 동작 원리
COALESCE(값1, 값2, ...) 형태로 사용하며, 왼쪽부터 차례대로 평가하여 처음 만나는 NULL이 아닌 값을 반환합니다. 따라서 FirstName이 NULL이면 두 번째 인수인 'UNKNOWN NAME'이 반환됩니다. IFNULL() 함수와 비슷한 역할을 하지만, COALESCE()는 세 개 이상의 인수도 처리할 수 있어 더욱 유연하게 활용할 수 있다는 장점이 있습니다.