COALESCE 함수는 PostgreSQL에서 NULL 값을 처리하는 데 사용되는 함수입니다. 여러 개의 인수를 받아 첫 번째 NULL이 아닌 값을 반환합니다. Oracle에서 사용하는 NVL 함수와 동일한 기능을 제공합니다.
COALESCE 함수 사용 방법
기본 구문:
COALESCE(expr1, expr2, ..., exprN)
- expr1: 첫 번째 인수
- expr2: 두 번째 인수
- ..., exprN: 마지막 인수
예시:
-- 첫 번째 인수가 NULL이 아니면 첫 번째 인수를, NULL이면 "John Doe"를 반환합니다.
SELECT COALESCE(name, 'John Doe');
-- 첫 번째 컬럼이 NULL이면 두 번째 컬럼을, 두 번째 컬럼도 NULL이면 0을 반환합니다.
SELECT COALESCE(age, height, 0);
-- 여러 개의 조건을 함께 사용하여 NULL 값을 처리할 수 있습니다.
SELECT COALESCE(
CASE WHEN gender = 'M' THEN '남성'
ELSE '여성'
END,
'정보 없음'
);
COALESCE 함수 활용
COALESCE 함수는 다음과 같은 다양한 상황에서 활용될 수 있습니다.
- NULL 값을 기본값으로 바꿔주는 경우:
-- name 컬럼이 NULL이면 "익명"으로 표시합니다.
SELECT COALESCE(name, '익명');
- 여러 개의 컬럼 중에 첫 번째 NULL이 아닌 값을 선택하는 경우:
-- 첫 번째 컬럼이 NULL이면 두 번째 컬럼을 선택합니다.
SELECT COALESCE(column1, column2);
- 조건에 따라 값을 선택하는 경우:
-- 성별에 따라 "남성" 또는 "여성" 문자열을 반환합니다.
SELECT COALESCE(
CASE WHEN gender = 'M' THEN '남성'
ELSE '여성'
END
);
- CASE WHEN 문과 함께 사용하여 복잡한 조건 처리:
-- 나이가 18세 이상이면 "성인", 18세 미만이면 "미성년자"를 반환합니다.
SELECT COALESCE(
CASE WHEN age >= 18 THEN '성인'
ELSE '미성년자'
END,
'정보 없음'
);
COALESCE 함수와 관련된 다른 함수
- CASE WHEN: 조건에 따라 값을 선택하는 데 사용됩니다.
- IFNULL: NULL 값을 다른 값으로 바꿔주는 데 사용됩니다.
- GREATEST: 여러 값 중 가장 큰 값을 반환합니다.
- LEAST: 여러 값 중 가장 작은 값을 반환합니다.
추가 정보
- COALESCE 함수는 NULL 값을 처리하는 데 유용한 함수이지만, 과도하게 사용하면 코드의 가독성을 떨어뜨릴 수 있습니다.
- COALESCE 함수 대신 CASE WHEN 문을 사용하면 더욱 명확하고 효율적인 코드를 작성할 수 있습니다.
맺음말
COALESCE 함수는 PostgreSQL에서 NULL 값을 처리하는 데 널리 사용되는 함수입니다. 이 글을 통해 COALESCE 함수의 기본적인 사용 방법부터 활용 예시, 관련 함수까지 심층적으로 이해하고 활용할 수 있기를 바랍니다.