💻Programming/Oracle

[Oracle/오라클] NULL처리 함수

horang_dev 2021. 3. 15. 19:54

 1. IS [NOT] NULL

     - 특정 컬럼의 값이 NULL인지 판단

     - NULL은 '=' 기호로 판단 불가 (문법상 오류는 아님)

    

    컬럼명 IS [NOT] NULL

 

ex) 사원테이블(employees)에서 영업실적코드 (commission_pct)가 NULL이 아닌 사원정보를 조회하시오.

  SELECT A.employee_id AS 사원번호,
   	 A.emp_name AS 사원명,
         B.department_name AS 부서명,
         A.commission_pct AS 영업실적,
         A.salary AS 급여
    FROM employees A, department B
   WHERE A.department_id = B.department_id
     AND A.commission_pct IS NOT NULL;

-- 출력 결과 --


 2. NVL ( c, val )

     - NULL처리 함수 중 가장 널리 사용

     - c 컬럼의 값이 NULL이면 val 값을 반환하고, NULL이 아니면 자신의 값을 반환

     - 주로 연산식에 사용

     - c와 val의 데이터 타입이 같아야 함.

    
ex) 사원테이블에서 영업실적에 따른 보너스를 계산하고 이번달 지급액을 조회하시오.

     보너스 = 급여 * 영업실적코드

     지급액 = 급여 + 보너스

     Alias는 사원번호, 이름, 부서명, 본봉, 영업실적, 보너스, 지급액이다.

    SELECT A.employee_id AS 사원번호, 
           A.emp_name AS 이름,
           B.department_name AS 부서명, 
           A.salary AS 본봉,
           NVL(TO_CHAR(A.commission_pct,'0.0'),'없음') AS 영업실적, 
           NVL(ROUND(A.salary*A.commission_pct,1),0) AS 보너스,
           NVL(A.salary+ROUND(A.salary*A.commission_pct,1),A.salary) AS 지급액
      FROM employees A, departments B
     WHERE A.department_id = B.department_id;

-- 출력 결과 --


 3. NVL2 ( c, val1, val2 )

     - c 컬럼의 값이 NULL이 아니면 val 값을, NULL이면 val2를 반환

     - val1과 val2는 같은 데이터 타입이어야 함.

 

ex) 회원테이블에서 회원들의 핸드폰번호를 조회하시오. 핸드폰번호가 없으면 '연락처 없음'을 출력하시오.

     Alias는 회원번호, 회원명, 연락처이다.

 

    SELECT mem_id AS 회원번호,
           mem_name AS 회원명, 
           NVL2(mem_hp,mem_hp,'연락처 없음') AS 연락처
      FROM member;

-- 출력 결과 --

반응형