PostgreSQL COALESCE 함수 사용 방법 가이드

COALESCE 함수는 PostgreSQL에서 NULL 값을 처리하는 데 사용되는 함수입니다. 여러 개의 인수를 받아 첫 번째 NULL이 아닌 값을 반환합니다. Oracle에서 사용하는 NVL 함수와 동일한 기능을 제공합니다.

Postgres

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 함수의 기본적인 사용 방법부터 활용 예시, 관련 함수까지 심층적으로 이해하고 활용할 수 있기를 바랍니다.