본문 바로가기
일상꿀팁

Database / PostgreSQL COALESCE 사용하기

by 하랑캠프 2024. 8. 10.
728x90
반응형

PostgreSQL에서 COALESCE 함수는 SQL에서 NULL 값을 처리하는 데 매우 유용한 기능입니다. 데이터베이스를 다루다 보면 NULL 값이 포함된 데이터를 자주 마주하게 되는데, 이럴 때 COALESCE를 사용하면 원하는 값으로 대체할 수 있어 데이터 처리의 유연성을 높일 수 있습니다. 이번 글에서는 COALESCE 함수의 개념과 사용법을 상세히 설명하고, 실제 사례를 통해 이를 효과적으로 활용하는 방법을 알아보겠습니다.

 

COALESCE(A, B);

 

A값이 NULL일 경우 B로 반환합니다.

select category_id, description, COALESCE(description, 'empty') as COALESCE_RESULT from categories;

COALESCE 함수란?

COALESCE 함수는 주어진 인자들 중에서 첫 번째로 NULL이 아닌 값을 반환하는 함수입니다. 여러 개의 인자를 전달할 수 있으며, 왼쪽에서 오른쪽으로 평가되면서 첫 번째로 NULL이 아닌 값이 반환됩니다. 만약 모든 인자가 NULL일 경우, COALESCE는 NULL을 반환합니다. 이 함수는 특히 데이터베이스에서 누락된 데이터를 처리하거나 기본값을 설정할 때 매우 유용합니다.

COALESCE 함수의 기본 구문

COALESCE 함수의 기본 구문은 다음과 같습니다:

COALESCE(value1, value2, ..., value_n)

이 구문에서 value1부터 value_n까지는 평가될 인자들입니다. 이 인자들은 문자열, 숫자, 날짜 등 다양한 데이터 유형일 수 있습니다. COALESCE 함수는 왼쪽에서 오른쪽으로 인자를 평가하여 첫 번째로 NULL이 아닌 값을 반환하게 됩니다.

Database / PostgreSQL - YouTube

 

https://www.youtube.com/results?search_query=Database+%2F+PostgreSQL+

 

www.youtube.com

 

실제 사용 사례

COALESCE 함수는 다양한 상황에서 활용될 수 있습니다. 예를 들어, 고객 정보 테이블에서 '전화번호'가 NULL인 경우, '휴대폰 번호'를 대신 표시하고 싶다면 COALESCE를 사용할 수 있습니다. 아래는 이러한 예제를 보여주는 SQL 쿼리입니다:

SELECT 고객명, COALESCE(전화번호, 휴대폰번호) AS 연락처
FROM 고객정보;

이 쿼리는 고객명과 함께 연락처를 반환합니다. 만약 '전화번호'가 NULL이라면, '휴대폰번호'가 연락처로 대체되어 반환됩니다.

Database / PostgreSQL - YouTube

 

https://www.youtube.com/results?search_query=Database+%2F+PostgreSQL+

 

www.youtube.com

 

NULL 값을 기본값으로 대체하기

데이터베이스를 설계할 때 NULL 값을 특정 기본값으로 대체해야 하는 경우가 있습니다.

 

COALESCE를 사용하면 이러한 작업을 손쉽게 처리할 수 있습니다. 예를 들어, 고객의 이메일이 NULL일 경우, 기본 이메일 주소로 'unknown@example.com'을 설정하려면 다음과 같은 쿼리를 사용할 수 있습니다:

SELECT 고객명, COALESCE(이메일, 'unknown@example.com') AS 이메일
FROM 고객정보;

이 쿼리는 이메일이 NULL인 경우 'unknown@example.com'을 반환하게 됩니다. 이를 통해 데이터의 일관성을 유지할 수 있습니다.

다중 COALESCE 사용하기

COALESCE는 여러 개의 값을 순차적으로 평가하여 NULL이 아닌 첫 번째 값을 반환합니다.

 

이 기능을 활용하면 다중 컬럼에서 값을 선택할 때 매우 유용합니다.

 

예를 들어, '주소' 정보를 우선적으로 표시하되, '주소'가 NULL인 경우에는 '대체 주소'를, 그것마저 NULL인 경우에는 '기본 주소'를 표시하는 쿼리는 다음과 같습니다

Database / PostgreSQL - YouTube

 

https://www.youtube.com/results?search_query=Database+%2F+PostgreSQL+

 

www.youtube.com

SELECT COALESCE(주소, 대체주소, 기본주소) AS 주소
FROM 고객정보;

이 쿼리는 순차적으로 각 컬럼을 평가하여 가장 적절한 값을 선택하여 반환합니다.

COALESCE와 CASE문 비교

COALESCE 함수는 CASE문과 유사하게 동작하지만, 더 간단한 구문을 제공합니다. 아래는 COALESCE를 CASE문으로 대체한 예시입니다:

SELECT 고객명,
CASE
    WHEN 전화번호 IS NOT NULL THEN 전화번호
    WHEN 휴대폰번호 IS NOT NULL THEN 휴대폰번호
    ELSE NULL
END AS 연락처
FROM 고객정보;

위의 CASE문은 COALESCE 함수와 동일한 결과를 반환합니다. 그러나 COALESCE를 사용하면 코드가 더 간결해지고 가독성이 높아집니다.

결론 및 요약

COALESCE 함수는 PostgreSQL에서 매우 강력한 도구로, NULL 값을 처리할 때 특히 유용합니다.

 

이를 통해 데이터를 더 유연하고 일관성 있게 처리할 수 있으며, 복잡한 NULL 처리 로직을 간단하게 구현할 수 있습니다.

 

COALESCE의 사용법을 익혀 데이터베이스에서 더욱 효율적인 쿼리를 작성해 보세요.

COALESCE 설명
COALESCE(value1, value2, ..., value_n) 첫 번째로 NULL이 아닌 값을 반환
CASE문 복잡한 조건을 사용할 수 있지만 구문이 길어질 수 있음
상황 COALESCE 사용 예
전화번호와 휴대폰번호 중 유효한 값을 선택 COALESCE(전화번호, 휴대폰번호)
NULL 값을 기본값으로 대체 COALESCE(이메일, 'unknown@example.com')

방시혁 프로필 학력 재산 나이 가족 고향 결혼

 

방시혁 프로필 학력 재산 나이 가족 고향 결혼

방시혁, 'Hitman Bang'이라는 예명으로도 널리 알려진 그는 한국 음악 산업의 중요한 인물로 자리잡았습니다. 1972년 8월 9일 태어난 방시혁은 서울 용산구 한남동에 거주하며, 남양 방씨 가문 출신입

writeki.tistory.com

과즙세연 방시혁 친언니 필리핀 나이 프로필

 

과즙세연 방시혁 친언니 필리핀 나이 프로필

과즙세연(본명: 인세연)은 2000년 11월 9일에 태어난 23세의 인기 인터넷 방송인입니다. 그녀는 아프리카TV를 비롯해 유튜브, 틱톡, 인스타그램 등 다양한 플랫폼에서 활발히 활동하고 있으며, 최근

writeki.tistory.com

과즙세연 프로필 본명 나이 방송경력 출신 방시혁

 

과즙세연 프로필 본명 나이 방송경력 출신 방시혁

인터넷 방송의 세계에서 과즙세연이라는 이름은 단연 주목받는 인물 중 하나입니다. 2000년생인 과즙세연, 본명 인세연은 현재 대한민국에서 가장 인기 있는 인터넷 방송인 중 한 명으로 자리 잡

writeki.tistory.com

삼성에어컨 스마트리셋 방법 (에어컨종류 다가능)

 

삼성에어컨 스마트리셋 방법 (에어컨종류 다가능)

에어컨이 갑자기 작동하지 않거나 오류가 발생했을 때, 간단한 조치로 문제를 해결할 수 있는 방법 중 하나가 바로 ‘스마트 리셋’입니다. 스마트 리셋은 에어컨의 전원 코드를 뺏다 다시 꼽는

writeki.tistory.com