2022-03-11
SELECT 쿼리 조회 시 NULL을 리턴하는 경우 어디서 예외처리를 하던 db 에서나 애플리케이션 단에서나 오류가 발생하게 된다. 이와 같은 SELECT 쿼리 조회시 발생할 수 있는 NULL처리를 간단히 하는 함수중 COALESCE에 대하여 알아보자.
- 정의
COALESCE(x, y) = (CASE WHEN x IS NOT NULL THEN x ELSE y END)
공식문서에는 위와 같은 형식으로 간단히 그 의미를 표현하고 있다. 이를 해석하면 해당 함수의 매개 값 중 앞에 있는 값(X)이 NULL이 아니면 앞에 값(X)을 아닐 경우 다음 매개변수(Y)를 체크하여, 그 값을 리턴한다. 이해가 어려울 수 있으니 아래의 예시를 보자.
- 예시
-- 1을 리턴한다.
SELECT COALESCE(1, NULL);
-- 2를 리턴한다.
SELECT COALESCE(NULL, 2, 3);
-- 3을 리턴한다.
SELECT COALESCE(NULL, NULL, 3);
위의 예시를 보면 주어진 매개변수 순서대로 NULL 값을 체크하여, 매개변수 중 가장 첫 번째 NULL이 아닌 값을 리턴하는 것을 볼 수 있다. 매개변수는 2개가 아닌 여러 개를 넣을 수도 있다.