본문 바로가기

[오라클 레퍼런스 함수] NVL2 - NULL 여부에 따라 값 지정

by ㅇㅍㅍ 2023. 8. 11.
[오라클 레퍼런스 함수] NVL2 - NULL 여부에 따라 값 지정
728x90

 

NVL2

 

구문

NVL2(expr1, expr2, expr3)

 

목적

NVL2 함수는 지정된 표현식이 null 또는 not null인지에 따라 쿼리에서 반환되는 값을 결정합니다. 만약 expr1이 null이 아니라면, NVL2expr2를 반환합니다. 만약 expr1이 null이라면, NVL2expr3를 반환합니다.

인수 expr1은 어떤 데이터 유형이든 사용할 수 있습니다. 인수 expr2expr3는 LONG을 제외한 어떤 데이터 유형이든 사용할 수 있습니다.

만약 expr2expr3의 데이터 유형이 다르다면, 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 함수 문서

 

반응형

댓글