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

MySQL COALESCE 함수 완벽 정리 – NULL이 아닌 값을 우선 반환하는 방법

MySQL의 COALESCE() 함수는 인자 목록에서 가장 먼저 만나는 NULL이 아닌(NON-NULL) 값을 즉시 반환합니다. 첫 번째 인자가 NULL이 아니라면 그 값을 그대로 돌려주고, NULL이라면 다음 인자로 넘어가 NULL이 아닌 값을 찾을 때까지 왼쪽에서 오른쪽으로 순서대로 확인합니다.

데모 테이블 생성하기

먼저 예제에 사용할 테이블을 생성해 보겠습니다.

mysql> create table DemoTable
(
    Number1 int,
    Number2 int
);
Query OK, 0 rows affected (5.48 sec)

레코드 삽입하기

insert 명령을 사용해 몇 개의 레코드를 삽입합니다.

mysql> insert into DemoTable values(100,200);
Query OK, 1 row affected (0.40 sec)
mysql> insert into DemoTable values(NULL,50);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values(10,NULL);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values(NULL,NULL);
Query OK, 1 row affected (0.08 sec)

전체 레코드 조회하기

select 문으로 테이블의 모든 레코드를 확인합니다.

mysql> select *from DemoTable;

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

+---------+---------+
| Number1 | Number2 |
+---------+---------+
|     100 | 200     |
|    NULL | 50      |
|      10 | NULL    |
|    NULL | NULL    |
+---------+---------+
4 rows in set (0.00 sec)

COALESCE를 활용한 쿼리 실행

다음은 COALESCE를 사용하여 NULL이 아닌 값을 우선적으로 가져오는 쿼리입니다.

mysql> select coalesce(Number1,Number2) AS NON_NULL_ARGUMENT_FIRST from DemoTable;

결과를 살펴보면, Number1이 NULL인 행에서는 Number2의 값이 대신 반환되고, 두 컬럼이 모두 NULL인 마지막 행만 NULL로 출력되는 것을 확인할 수 있습니다.

+-------------------------+
| NON_NULL_ARGUMENT_FIRST |
+-------------------------+
| 100                     |
| 50                      |
| 10                      |
| NULL                    |
+-------------------------+
4 rows in set (0.00 sec)

정리하면, COALESCE(Number1, Number2)는 인자를 왼쪽에서 오른쪽으로 평가하며 가장 먼저 발견된 NULL이 아닌 값을 반환하는 함수입니다. 이를 활용하면 특정 컬럼이 NULL일 때 대체 값을 손쉽게 처리할 수 있어 데이터 조회 시 매우 유용하게 사용됩니다.