본문 바로가기

Database/Oracle

Oracle。NVL, DECODE, CASE 함수

728x90
반응형

1. NULL을 다른 값으로 변환하는 NVL 함수

 

NVL(DATA1, DATA2)

// DATA1에는 NULL을 포함하는 컬럼 또는 표현식, DATA2에는 NULL을 대체하는 값 기술
// DATA1과 DATA2는 반드시 데이터 타입이 일치해야 함

NVL(COMM, 0) // COMM 컬럼의 NULL을 '0'으로 변환
NVL(HIREDATE, TO_DATE('2017/5/5', 'YYYY/MM/DD') // HIREDATE컬럼의 NULL을 '2017/5/5'로 변환
NVL(JOB, '매니저') // JOB 컬럼의 NULL을 '매니저'로 변환

 

 

 

# NVL2 함수

DATA1을 검사하여 그 결과가 NULL이 아니면 DATA2를 반환하고, NULL이면 DATA3 반환

 

NVL2(DATA1, DATA2, DATA3)

 

# NULLIF 함수

두 표현식을 비교하여 동일한 경우 NULL을 반환하고, 동일하지 않으면 첫 번째 표현식 반환

 

NULLIF(DATA1, DATA2)

 

# COALESCE 함수

인수 중에서 NULL이 아닌 첫 번째 인수 반환

 

COALESCE(DATA1, DATA2, ... , DATA-N)

// DATA1이 NULL이 아니면 DATA1을 반환
// DATA1이 NULL이고, DATA2가 NULL이 아니면, DATA2 반환
// DATA1부터 DATA-N-1까지의 값이 NULL이고, DATA-N이 NULL이 아니면, DATA-N 반환

SELECT COALESCE(COMM, SAL, 0)
 FROM EMP
ORDER BY DEPTNO;

 

2. DECODE 함수

SWITCH CASE문과 같은 기능으로 여러가지 경우에 대해서 선택

 

DECODE (표현식, 조건1, 결과1,
        조건2, 결과2,
        조건3, 결과3,
        기본결과n
)

 

 

3. CASE 함수

IF ELSE와 유사한 구조로 조건에 따라 서로 다른 처리가 가능한(여러 가지 경우에 대해서 하나를 선택) 함수이고, DECODE보다 확장된 기능

DECODE 함수는 조건이 일치(=)하는 경우만 적용하지만, CASE 함수는 다양한 비교 연산자를 이용하여 조건을 제시할 수 있고, 범위 지정할 수 있음

 

CASE 비교대상값 WHEN 조건1 THEN 결과1
            WHEN 조건2 THEN 결과2
            WHEN 조건3 THEN 결과3
            ELSE 결과n
END

 

728x90
반응형