데이터베이스 작업을 하다 보면 여러 값 중에서 NULL이 아닌 첫 번째 값을 가져와야 하는 경우가 자주 발생합니다. 이럴 때 MySQL에서는 COALESCE() 함수를 사용하면 간단하게 해결할 수 있습니다.
COALESCE() 함수란?
COALESCE() 함수는 인자로 전달된 값들을 왼쪽부터 순서대로 검사하여 NULL이 아닌 첫 번째 값을 반환하는 함수입니다. 하나 이상의 인자를 받을 수 있으며, 만약 모든 인자가 NULL이라면 최종적으로 NULL을 반환합니다. 기본 문법은 다음과 같습니다.
COALESCE(value1, value2, …, valueN)
동작 원리
함수는 value1부터 시작해 차례대로 각 값을 확인하고, 처음으로 NULL이 아닌 값을 만나는 순간 해당 값을 반환합니다. 예를 들어 앞의 세 인자가 모두 NULL이라면 네 번째 인자가 곧바로 결과값이 됩니다.
사용 예제
다음 예제를 통해 COALESCE() 함수의 실제 동작을 확인해 보겠습니다.
mysql> Select COALESCE(NULL, NULL, NULL, 'Ram', 'Aarav', NULL); +--------------------------------------------------+ | COALESCE(NULL, NULL, NULL, 'Ram', 'Aarav', NULL) | +--------------------------------------------------+ | Ram | +--------------------------------------------------+ 1 row in set (0.00 sec)
위 쿼리에서는 앞의 세 인자가 모두 NULL이므로, 함수는 NULL이 아닌 첫 번째 값인 'Ram'을 반환했습니다. 그 뒤에 있는 'Aarav'는 이미 값을 찾았기 때문에 더 이상 평가되지 않습니다.
실무 활용 사례
COALESCE() 함수는 특히 컬럼의 값이 NULL일 때 기본값을 대신 표시해야 하는 상황에서 매우 유용합니다. 예를 들어 사용자 테이블에서 연락처가 등록되지 않은 경우 기본 문구를 보여주고 싶다면 다음과 같이 작성할 수 있습니다.
SELECT name, COALESCE(phone, '연락처 없음') AS contact FROM users;
이처럼 COALESCE() 함수를 활용하면 복잡한 조건문 없이도 NULL 처리 로직을 한 줄의 쿼리로 깔끔하게 해결할 수 있습니다.