ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Oracle 함수(Function) - NULL 처리 함수와 선택 함수
    데이터베이스/Oracle 2020. 11. 11. 12:49
    728x90
    반응형

    NULL 처리 함수

    NULL 처리 함수란 해당 컬럼값이 NULL인 경우 대체값을 사용하는 함수이다.

     

    NULL 처리 함수의 NVLNVL2 를 알아보자

     

     

    NVL

    NVL이란 NULL로 되어 있는 컬럼의 값을 인자로 지정한 숫자 혹은 문자변경하여 반환한다.

    - P1 : NULL데이터를 처리할 컬럼명 혹은 값

    - P2 : NULL값을 대체하고자 하는 값

     

    [ NVL 예시 ]

    SELECT EMP_NO, EMP_NAME, SALARY, NVL(BONUS, 0), -- BONUS가 Null값이면 0으로 
    (SALARY + (SALARY * NVL(BONUS, 0)))*12
    FROM EMPLOYEE;

     

     

    NVL2

    NVL2란 컬럼명이 NULL이 아닌 경우 대체 하고자 하는 값을 적고

    NULL인 경우 대체 하고자 하는 값을 적는다.

    즉 NULL값인 경우와 NULL값이 아닌 경우에 대체값들을 각각 준다.

     

    작성법:  NVL2(컬럼명, P1, P2)

    - P1 : NULL이 아닌 경우 대체값

    - P2 : NULL인 경우 대체값

     

    [ NVL2 예시 ]

    - EMPLOYEE 테이블에서 기존에 보너스를 받지 못하던 사원은

    보너스율을 0.3  받던 사원은 0.8로 변경하여 

    사원명, 기존 보너스, 변경된 보너스 조회

    SELECT EMP_NAME, BONUS, NVL2(BONUS, 0.8, 0.3)
    FROM EMPLOYEE;

     

     

    선택 함수

    선택함수여러 가지 경우에 따라 선택을 할 수 있는 기능제공하는 함수이다.

     

    여러가지 선택함수를 알아보자.

     

    DECODE

    DECODE란 비교하고자 하는 값 또는 컬럼이 조건식과 같으면 결과 값 반환한다.

    - 표현식 : 값에 따라 선택을 다르게 할 컬럼 혹은 값

    - 조건 : 해당 값이 참인지 거짓인지 여부 판단

    - 결과 : 해당 조건과 일치하는 경우 반환할 값

    - DEFAULT : 모든 조건이 불일치 시 반환할 값

     

     

     

    [ DECODE 예시 ]

    SELECT EMP_ID, EMP_NAME, EMP_NO,
    DECODE(SUBSTR(EMP_NO, 8, 1), ‘1’, ‘남’, ‘2’, ‘여‘) AS 성별
    FROM EMPLOYEE;

     

     

    CASE

    CASE란 비교하고자 하는 값 또는 컬럼이 조건식과 같으면 결과 값 반환(조건은 범위 값 가능)한다.

    - 조건 : 해당 값이 참인지 거짓인지 여부 판단 

    - 결과 : 해당 조건과 일치하는 경우 반환할 값

    - DEFAULT : 모든 조건이 불일치 시 반환할 값

     

    [ CASE 예시 ]

    하나의 조건일 때

    SELECT EMP_ID, EMP_NAME, EMP_NO,
    	CASE WHEN SUBSTR(EMP_NO, 8, 1) = 1 THEN ‘남’
    	ELSE ‘여’
    	END AS 성별
    FROM EMPLOYEE;

     

    여러개의 조건일 때

    SELECT EMP_NAME, SALARY,
    	CASE WHEN SALARY > 5000000 THEN '1등급‘
    		WHEN SALARY > 3500000 THEN '2등급‘
    		WHEN SALARY > 2000000 THEN '3등급'
    		ELSE '4등급‘
    	END 등급
    FROM EMPLOYEE;

    728x90
    반응형
Designed by Tistory.