IF-THEN-ELSE 문과 COALESCE() 함수의 관계
COALESCE() 함수는 인자로 전달된 값들의 목록에서 첫 번째로 NULL이 아닌 값을 반환하는 함수입니다. 흥미로운 점은, 이 함수의 동작 방식이 IF-THEN-ELSE 조건문으로 작성한 논리와 정확히 동일하다는 것입니다.
아래의 IF-THEN-ELSE 의사코드를 살펴보면 그 유사성을 쉽게 이해할 수 있습니다.
IF value1 IS NOT NULL THEN
output = value1;
ELSIF value2 IS NOT NULL THEN
output = value2;
ELSIF value3 IS NOT NULL THEN
output = value3;
.
.
.
ELSIF valueN IS NOT NULL THEN
output = valueN;
ELSE
output = NULL;
END IF;
동작 방식 비교
위 조건문은 왼쪽부터 차례대로 각 값을 검사하여, NULL이 아닌 첫 번째 값을 결과(output)에 대입합니다. 만약 모든 값이 NULL이라면 ELSE 블록이 실행되어 최종적으로 NULL을 반환합니다.
이는 다음과 같이 COALESCE() 함수를 호출하는 것과 논리적으로 완전히 동일합니다.
output = COALESCE(value1, value2, value3, ..., valueN);
정리
- 두 방식 모두 값 목록을 앞에서부터 순서대로 검사합니다.
- NULL이 아닌 첫 번째 값을 결과로 사용합니다.
- 모든 값이 NULL인 경우에는 NULL을 반환합니다.
따라서 COALESCE() 함수는 여러 줄에 걸친 IF-THEN-ELSE 분기 처리를 한 줄의 간결한 코드로 대체할 수 있는 편리한 도구라 할 수 있습니다. 실제 개발에서는 가독성과 유지보수성을 위해 조건문 대신 COALESCE() 함수를 사용하는 것이 일반적입니다.