MySQL 테이블 데이터에 COALESCE() 함수 적용하기
MySQL 테이블의 데이터 값에 COALESCE() 함수를 적용하려면 이 함수의 인수로 컬럼 이름을 전달해야 합니다. COALESCE() 함수는 전달된 인수를 왼쪽에서 오른쪽 순서로 검사하며, 첫 번째 컬럼의 값이 NULL이라면 다음 컬럼을 확인하고, 이 과정을 NULL이 아닌 첫 번째 값을 찾을 때까지 반복합니다.
아래의 'employee' 테이블 데이터를 사용하여 이 개념을 실제로 살펴보겠습니다.
예제 테이블: employee
mysql> Select * from employee; +----+------------+-------------+-----------+ | Id | First_Name | Middle_Name | Last_Name | +----+------------+-------------+-----------+ | 1 | Advik | NULL | Jhamb | | 2 | Rahul | Kumar | Sharma | | 3 | Raman | Singh | Rajput | | 4 | Krishan | Kumar | Khurana | | 5 | Sachin | Ramesh | Tendulkar | | 6 | NULL | Kumar | Gaurav | | 7 | NULL | Singh | Parmar | +----+------------+-------------+-----------+ 7 rows in set (0.00 sec)
COALESCE() 함수 쿼리 실행
mysql> Select COALESCE(First_Name, Middle_Name, Last_Name) AS Name FROM Employee; +---------+ | Name | +---------+ | Advik | | Rahul | | Raman | | Krishan | | Sachin | | Kumar | | Singh | +---------+ 7 rows in set (0.03 sec)
결과 분석
위 예제에서 COALESCE() 함수에는 세 개의 인수(First_Name, Middle_Name, Last_Name)가 전달되었습니다. 쿼리는 각 행에서 다음과 같은 우선순위로 이름을 반환합니다.
- First_Name에 값이 있는 경우: First_Name 값을 그대로 반환합니다. (예: Advik, Rahul)
- First_Name이 NULL인 경우: Middle_Name 값을 반환합니다. (예: 6번 행의 Kumar, 7번 행의 Singh)
- First_Name과 Middle_Name이 모두 NULL인 경우: Last_Name 값을 반환합니다.
- 세 컬럼이 모두 NULL인 경우: 최종적으로 NULL을 반환합니다.
이처럼 COALESCE() 함수는 여러 컬럼 중 NULL이 아닌 첫 번째 값을 손쉽게 가져와야 할 때 매우 유용하게 활용할 수 있습니다. 특히 빈 값이 허용되는 컬럼들에서 유효한 데이터를 우선적으로 조회해야 하는 상황에서 코드를 단순화하는 데 큰 도움이 됩니다.