MySQL의 COALESCE() 함수는 첫 번째 인수로 빈 문자열('')이 전달되면 그 빈 문자열을 그대로 반환합니다. 그 이유는 빈 문자열 역시 NULL이 아닌 유효한 값으로 간주되기 때문입니다. COALESCE() 함수는 인수 목록에서 가장 먼저 만나는 NULL이 아닌 값을 항상 결과로 반환하므로, 첫 번째 인수가 빈 문자열이라면 뒤에 오는 다른 값들은 평가되지 않고 빈 문자열이 그대로 출력됩니다.
예제
다음 예제를 통해 이 동작을 직접 확인해 보겠습니다.
mysql> Select COALESCE('','Ram');
+--------------------+
| COALESCE('','Ram') |
+--------------------+
| |
+--------------------+
1 row in set (0.00 sec)
위 쿼리 결과에서 알 수 있듯이, COALESCE('', 'Ram')은 두 번째 인수인 'Ram'이 아니라 첫 번째 인수인 빈 문자열을 그대로 반환합니다. 즉, 빈 문자열과 NULL은 서로 다른 개념이며, COALESCE() 함수 입장에서 빈 문자열은 'NULL이 아닌 값'으로 처리된다는 점을 기억하는 것이 중요합니다. 따라서 실무에서 데이터를 조회할 때 빈 문자열과 NULL을 구분하지 않고 처리하고 싶다면, NULLIF() 함수를 함께 사용하여 빈 문자열을 NULL로 변환한 뒤 COALESCE()를 적용하는 방법을 고려할 수 있습니다.