nvl2 예제

선택 nvl2 (커미션_pct, 커미션_pct,0) 2 직원; 디CODE 함수는 null 값을 처리하기 위한 것이 아니라 다음 예제와 같이 NVL 함수와 유사한 방식으로 사용할 수 있습니다. DECODE 함수는 두 식을 비교하고 두 식 중 하나를 호출자에게 반환하므로 식 형식이 동일하거나 적어도 동일한 유형으로 변환될 수 있어야 합니다. 이 예제는 E1을 E2와 비교할 수 있고 E3과 E4는 동일한 형식을 갖습니다. 그렇지 않은 경우 Oracle은 다음 예제에서 설명한 대로 예외를 발생시게 됩니다. 의도는 직원의 manager_emp_id 열이 NULL인지 여부를 확인하여 각 직원에게 관리자가 있는지 여부를 확인하는 것입니다. 이 예제의 디CODE 함수는 각 행의 manager_emp_id 열(첫 번째 식)과 NULL(두 번째 표현식)을 비교합니다. 비교 결과가 true이면 디코드는 `HEAD HONCHO`(세 번째 표현식)를 반환합니다. 그렇지 않으면 `WORKER BEE`(마지막 표현식)가 반환됩니다. NVL 및 NVL2 함수를 사용하면 식을 테스트하여 NULL인지 여부를 확인할 수 있습니다.

식이 NULL인 경우 NULL이 아닌 대체 값을 반환하여 해당 위치에 사용할 수 있습니다. 디코드 문의 식은 NULL일 수 있기 때문에 NVL 및 NVL2 함수는 실제로 디코드의 특수 버전입니다. 다음 예제에서는 NVL2를 사용하여 이전 섹션에 표시된 디코드 예제와 동일한 결과를 생성합니다. 디코드는 세 개 이상의 식을 인수로 합니다. 각 표현식은 열, 리터럴, 함수 또는 하위 쿼리일 수 있습니다. 디코딩을 사용하는 간단한 예제를 살펴보겠습니다: Oracle NVL2() 함수를 사용하여 작동 방식을 이해하는 몇 가지 예를 살펴보겠습니다. 이 예제에서 가장 큰 함수는 직원의 급여 또는 2000 중 더 큰 급여를 반환합니다. NULLIF 함수는 이 값을 직원의 급여와 비교하고 동일한 경우 NULL을 반환합니다.

질문 : nvl2 함수와 반대로 nvl 함수를 언제 사용해야합니까? nvl과 nvl2의 차이점은 무엇입니까? 이 예제에서는 부품 의 상태 열 값을 5개 값 각각과 비교하고 일치하는 값이 발견되면 해당 문자열을 반환합니다.