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

MySQL에서 필드가 NULL일 경우 다른 필드를 선택하는 방법 – COALESCE() 활용

MySQL에서 필드가 NULL일 경우 다른 필드 선택하기

특정 필드의 값이 NULL일 때 같은 행에 있는 다른 필드의 값을 대신 가져오고 싶다면, MySQL에서 제공하는 COALESCE() 함수를 사용하면 됩니다. COALESCE()는 인자로 전달된 값들 중 처음으로 NULL이 아닌 값을 반환하는 함수입니다.

1. 테이블 생성하기

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

mysql> create table DemoTable1470
    -> (
    -> FirstName varchar(20),
    -> Age int
    -> );
Query OK, 0 rows affected (0.57 sec)

2. 데이터 삽입하기

insert 명령을 사용해 테이블에 레코드를 삽입합니다. 이때 의도적으로 NULL 값을 포함시켜 동작을 확인합니다.

mysql> insert into DemoTable1470 values('Robert',23);
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable1470 values('Bob',NULL);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable1470 values(NULL,25);
Query OK, 1 row affected (0.15 sec)

3. 전체 레코드 확인하기

select 문을 사용하여 테이블의 모든 레코드를 조회합니다.

mysql> select * from DemoTable1470;

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

+-----------+------+
| FirstName | Age  |
+-----------+------+
| Robert    |   23 |
| Bob       | NULL |
| NULL      |   25 |
+-----------+------+
3 rows in set (0.00 sec)

4. COALESCE()로 NULL 대체 값 선택하기

FirstName 필드를 선택하되, 값이 NULL이면 Age 필드의 값을 대신 반환하는 쿼리는 다음과 같습니다.

mysql> select coalesce(FirstName,Age) as FirstNameOrAgeValue from DemoTable1470;

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

+---------------------+
| FirstNameOrAgeValue |
+---------------------+
| Robert              |
| Bob                 |
| 25                  |
+---------------------+
3 rows in set (0.00 sec)

COALESCE() 함수의 동작 원리

위 결과에서 세 번째 행은 FirstName이 NULL이었기 때문에 Age 값인 25가 반환된 것을 확인할 수 있습니다. 즉, COALESCE(FirstName, Age)는 왼쪽부터 차례대로 인자를 평가하여 NULL이 아닌 첫 번째 값을 반환합니다.

또한 COALESCE()는 두 개 이상의 인자도 처리할 수 있으므로, 여러 후보 필드 중 우선순위에 따라 NULL이 아닌 첫 번째 값을 가져와야 하는 상황에서 매우 유용하게 활용할 수 있습니다.