728x90
NVL2
구문
NVL2(expr1, expr2, expr3)
목적
NVL2 함수는 지정된 표현식이 null 또는 not null인지에 따라 쿼리에서 반환되는 값을 결정합니다. 만약 expr1이 null이 아니라면, NVL2는 expr2를 반환합니다. 만약 expr1이 null이라면, NVL2는 expr3를 반환합니다.
인수 expr1은 어떤 데이터 유형이든 사용할 수 있습니다. 인수 expr2와 expr3는 LONG을 제외한 어떤 데이터 유형이든 사용할 수 있습니다.
만약 expr2와 expr3의 데이터 유형이 다르다면, Oracle Database는 둘 중 하나를 암묵적으로 다른 데이터 유형으로 변환합니다. 그러나 암묵적 변환이 불가능하다면 데이터베이스는 오류를 반환합니다. 만약 expr2가 문자 또는 숫자 데이터라면, 암묵적 변환은 다음과 같이 구현됩니다:
- 만약 expr2가 문자 데이터라면, Oracle Database는 반환 값을 expr2의 데이터 유형으로 변환하기 전에 expr3를 변환합니다. 단, expr3가 null 상수인 경우에는 데이터 유형 변환이 필요하지 않으며, 데이터베이스는 expr2의 문자 세트로 VARCHAR2를 반환합니다.
- 만약 expr2가 숫자 데이터라면, Oracle Database는 어떤 인수가 더 높은 숫자 우선 순위를 가지는지를 결정하고, 다른 인수를 그 데이터 유형으로 암묵적으로 변환한 후 해당 데이터 유형을 반환합니다.
참고:
- 암묵적 변환에 대한 자세한 내용은 표 2-8을 참조하고, 숫자 우선순위에 관한 정보는 "Numeric Precedence"를 참조하십시오.
- Oracle Database Globalization Support Guide의 부록 C는 문자 값인 경우 NVL2의 반환 값에 할당되는 정렬을 정의하는 정렬 파생 규칙(collation derivation rules)에 대한 정보를 제공합니다.
예제
다음 예제는 employees 테이블의 commission_pct 열이 null인지 아닌지에 따라 일부 직원의 소득이 급여와 커미션으로 구성되었는지 또는 단순히 급여로만 구성되었는지를 나타냅니다.
SELECT last_name, salary,
NVL2(commission_pct, salary + (salary * commission_pct), salary) income
FROM employees
WHERE last_name like 'B%'
ORDER BY last_name;
LAST_NAME SALARY INCOME
------------------------- ---------- ----------
Baer 10000 10000
Baida 2900 2900
Banda 6200 6820
Bates 7300 8395
Bell 4000 4000
Bernstein 9500 11875
Bissot 3300 3300
Bloom 10000 12000
Bull 4100 4100
출처: 오라클 레퍼런스
원문 링크: Oracle NVL2 함수 문서
반응형
'코딩 > 오라클 함수' 카테고리의 다른 글
[오라클 레퍼런스 함수] ORA_DST_AFFECTED - 변경된 시간대(TIME ZONE) 데이터에 영향을 받는지 여부 확인 (0) | 2023.08.11 |
---|---|
[오라클 레퍼런스 함수] ORA_DM_PARTITION_NAME - 입력 행과 관련된 파티션의 이름 반환 (0) | 2023.08.11 |
[오라클 레퍼런스 함수] NVL - null을 문자열로 대체 (0) | 2023.08.11 |
[오라클 레퍼런스 함수] NUMTOYMINTERVAL - 숫자를 INTERVAL로 변환 (예) n년, n개월 (0) | 2023.08.11 |
[오라클 레퍼런스 함수] NUMTODSINTERVAL - 숫자를 INTERVAL로 변환 (예) n일, n시간, n분, n초 (0) | 2023.08.11 |
댓글