본문 바로가기

[오라클 레퍼런스 함수] COALESCE - 첫 번째 non-null 값 반환

by ㅇㅍㅍ 2023. 8. 1.
[오라클 레퍼런스 함수] COALESCE - 첫 번째 non-null 값 반환
728x90

COALESCE

 

구문

COALESCE(expr [, expr ]...)

 

목적

COALESCE 함수는 표현식 목록에서 첫 번째 non-null expr을 반환합니다. 적어도 두 개의 표현식을 지정해야 합니다. 모든 expr이 null로 평가되면 함수는 null을 반환합니다.

Oracle 데이터베이스는 단락 평가(short-circuit evaluation)를 사용합니다. 데이터베이스는 각 expr 값을 평가하고 NULL인지 여부를 결정할 때, 모든 expr 값을 평가하기 전에 각각을 개별적으로 판단합니다. 즉, NULL 여부를 확인하는 시점에 필요한 최소한의 표현식만을 평가하고, 나머지 표현식들은 평가하지 않습니다.

만약 모든 expr이 숫자 데이터 유형이거나 숫자 데이터 유형으로 암시적으로 변환될 수 있는 다른 비숫자 데이터 유형이라면, Oracle Database는 가장 높은 숫자 우선 순위를 가진 인수를 결정하고, 나머지 인수를 해당 데이터 유형으로 암시적으로 변환하여 해당 데이터 유형을 반환합니다.

 

참고:

  • 암시적 변환에 관한 자세한 정보는 표 2-8을 참조하세요. 숫자 우선 순위 정보는 Numeric Precedence를 확인하세요.
  • Oracle Database Globalization Support Guide의 부록 C는 COALESCE 함수의 반환 값이 문자 값인 경우, 해당 문자 값의 정렬(collation)을 정의하는 정렬 파생 규칙(collation derivation rules)에 대한 정보를 제공합니다.

 

이 함수는 NVL 함수의 일반화된 버전입니다.

또한 COALESCE 함수를 CASE 식의 다양한 형태로 사용할 수도 있습니다. 예를 들어,

COALESCE(expr1, expr2)

 

다음과 같습니다:

CASE WHEN expr1 IS NOT NULL THEN expr1 ELSE expr2 END

 

비슷하게,

COALESCE(expr1, expr2, ..., exprn)

 

n이 3 이상인 경우, 다음과 같습니다:

CASE WHEN expr1 IS NOT NULL THEN expr1 
   ELSE COALESCE (expr2, ..., exprn) END

 

참고:

NVLCASE 표현식

 

예제

다음 예제는 샘플 oe.product_information 테이블을 사용하여 제품의 재고청산 판매를 조직합니다. 이 예제에서는 목록 가격이 있는 모든 제품에 10% 할인을 적용합니다. 목록 가격이 없는 경우, 판매 가격은 최소 가격이 됩니다. 최소 가격도 없는 경우, 판매 가격은 "5"가 됩니다.

SELECT product_id, list_price, min_price,
       COALESCE(0.9*list_price, min_price, 5) "Sale"
  FROM product_information
  WHERE supplier_id = 102050
  ORDER BY product_id;

PRODUCT_ID LIST_PRICE  MIN_PRICE       Sale
---------- ---------- ---------- ----------
      1769         48                  43.2
      1770                    73         73
      2378        305        247      274.5
      2382        850        731        765
      3355                                5

 


출처: 오라클 레퍼런스

원문 링크: Oracle COALESCE 함수 문서

 

반응형

댓글