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
참고:
예제
다음 예제는 샘플 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 함수 문서
'코딩 > 오라클 함수' 카테고리의 다른 글
[오라클 레퍼런스 함수] COLLECT - nested table 생성하여 집계(나열) (0) | 2023.08.01 |
---|---|
[오라클 레퍼런스 함수] COLLATION - 정렬(collation)의 이름 반환 (0) | 2023.08.01 |
[오라클 레퍼런스 함수] CLUSTER_SET - 클러스터 ID와 확률 쌍의 집합 반환 (0) | 2023.08.01 |
[오라클 레퍼런스 함수] CLUSTER_PROBABILITY - 클러스터 확률 반환 (0) | 2023.08.01 |
[오라클 레퍼런스 함수] CLUSTER_ID - 클러스터 식별자 반환 (0) | 2023.08.01 |
댓글