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

MySQL COALESCE() 함수로 NULL 값 대체하기 – UPDATE 문 활용 예제

MySQL에서 COALESCE() 함수는 인수로 전달된 값들 중 첫 번째로 NULL이 아닌 값을 반환하는 함수입니다. 이 특성을 활용하면 UPDATE 문과 함께 사용하여 테이블에 존재하는 NULL 값을 원하는 기본값으로 손쉽게 대체할 수 있습니다.

예제 데이터 확인

설명을 위해 'Employee' 테이블을 사용합니다. 아래 데이터에서 ID가 5와 6인 행의 Salary 열은 NULL로 저장되어 있습니다.

mysql> Select * from Employee;
+----+--------+--------+
| ID | Name   | Salary |
+----+--------+--------+
| 1  | Gaurav | 50000  |
| 2  | Rahul  | 20000  |
| 3  | Advik  | 25000  |
| 4  | Aarav  | 65000  |
| 5  | Ram    | NULL   |
| 6  | Mohan  | NULL   |
+----+--------+--------+
6 rows in set (0.00 sec)

COALESCE() 함수로 NULL 값 업데이트하기

다음 쿼리들은 COALESCE() 함수를 UPDATE 문과 WHERE 절과 함께 사용하여 NULL 자리에 새로운 값을 삽입합니다.

mysql> Update Employee set Salary = COALESCE(Salary,20000) where Id = 5;
Query OK, 1 row affected (0.09 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> Update Employee set Salary = COALESCE(Salary,30000) where Id = 6;
Query OK, 1 row affected (0.06 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> Select * from Employee;
+----+--------+--------+
| ID | Name   | Salary |
+----+--------+--------+
| 1  | Gaurav | 50000  |
| 2  | Rahul  | 20000  |
| 3  | Advik  | 25000  |
| 4  | Aarav  | 65000  |
| 5  | Ram    | 20000  |
| 6  | Mohan  | 30000  |
+----+--------+--------+
6 rows in set (0.00 sec)

동작 원리

COALESCE(Salary, 20000)은 먼저 Salary 열의 값을 확인합니다. Salary가 NULL이 아니라면 기존 값을 그대로 반환하고, NULL이라면 두 번째 인수인 대체값(20000 또는 30000)을 반환합니다. 그 결과 ID = 5인 행의 Salary는 NULL에서 20000으로, ID = 6인 행의 Salary는 NULL에서 30000으로 각각 업데이트되었습니다.

이처럼 COALESCE() 함수를 활용하면 복잡한 조건문 없이도 NULL 값을 간단하고 안전하게 처리할 수 있어, 데이터 정합성을 유지하는 데 매우 유용합니다.