본문 바로가기

IT/DB

데이터베이스 SQL COALESCE 함수 사용하는 방법

300x250

 

 

 

SQL의 COALESCE 함수는 제공된 여러 인수 중 첫 번째 NULL이 아닌 값을 반환하는 데 사용됩니다.

 

NULL 처리를 위한 강력한 도구로, 여러 열 또는 표현식에서 대체 값을 설정하거나 기본값을 제공하는 데 유용합니다.

 


COALESCE 함수의 문법

 
COALESCE(expression1, expression2, ..., expressionN)
 
  • expression1, expression2, ..., expressionN: COALESCE 함수는 왼쪽부터 차례로 평가하며, NULL이 아닌 첫 번째 값을 반환합니다.
  • 모든 인수가 NULL이면 결과도 NULL이 반환됩니다.

 

COALESCE 함수 사용 예제

 

1. 기본 사용: NULL 대체

예를 들어, 고객의 nickname이 NULL일 경우, real_name을 사용하고 싶을 때:

 
SELECT COALESCE(nickname, real_name) AS display_name FROM customers;
 
  • nickname이 NULL이면 real_name이 반환됩니다.
  • 둘 다 NULL이면 결과는 NULL입니다.

 

2. 다중 표현식 사용

 

여러 대체값을 제공하여, 첫 번째 NULL이 아닌 값을 반환합니다.

 
SELECT COALESCE(nickname, real_name, 'Unknown') AS display_name FROM customers;
 
 
  • nickname → real_name → 'Unknown' 순으로 평가하며, NULL이 아닌 첫 번째 값을 반환합니다.

 

3. 열 또는 계산식 조합

 

NULL 값을 처리하는 데 계산식과 함께 사용할 수도 있습니다.

 
SELECT COALESCE(salary, 0) + bonus AS total_income FROM employees;
 
  • salary가 NULL이면 0을 사용하여 합산합니다.

 

COALESCE와 다른 NULL 처리 함수 비교

 

NVL (Oracle)

Oracle 데이터베이스에서 사용되는 유사한 함수입니다. 두 개의 인수를 비교해 NULL인 경우 대체값을 반환합니다.

 
NVL(expression1, expression2)
 
  • COALESCE는 여러 인수를 처리할 수 있지만, NVL은 두 개의 인수만 허용합니다.

 

ISNULL (SQL Server)

 

SQL Server에서 사용되는 함수로, NULL을 대체합니다.

ISNULL(expression1, replacement_value)
 
  • COALESCE는 ANSI 표준이므로 다양한 DBMS에서 사용 가능합니다.

 

실제 활용 사례

 

1. 기본값 설정

 

사용자 테이블에서 last_login이 NULL인 경우 기본값으로 "1970-01-01"을 설정:

 
SELECT COALESCE(last_login, '1970-01-01') AS last_login_date 
FROM users;
 

2. 다중 열 처리

주소 데이터에서 우선순위에 따라 고객의 주소를 반환:

 
SELECT COALESCE(home_address, office_address, 'No Address Available') AS primary_address 
FROM customer_addresses;
 

3. 그룹화 및 집계

매출 테이블에서 특정 컬럼이 NULL인 경우 0으로 처리하여 합계 계산:

 
SELECT department_id, SUM(COALESCE(sales_amount, 0)) AS total_sales 
FROM sales 
GROUP BY department_id;
 

요약

  • COALESCE첫 번째 NULL이 아닌 값을 반환하는 함수로, NULL을 처리하고 기본값을 제공하는 데 적합합니다.
  • 다중 열, 표현식, 기본값 설정 등 다양한 상황에서 활용 가능합니다.
  • 다른 NULL 처리 함수들보다 유연하며, ANSI SQL 표준이기 때문에 다양한 DBMS에서 사용 가능합니다.

 

 

300x250