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 값을 간단하고 안전하게 처리할 수 있어, 데이터 정합성을 유지하는 데 매우 유용합니다.