빅데이터/Oracle SQL | Do it! 오라클로 배우는 데이터베이스 입문

오라클 함수 | NULL 처리 함수 (NVL / NVL2) & DECODE 함수와 CASE문

KimKelly 2023. 2. 17. 23:36
반응형

06-6 NULL 처리 함수

특정 열의 데이터가 NULL이여서 연산 수행이 되지 않을 때,  NVL함수와 NVL2 함수를 사용해 데이터를 NULL이 아닌 다른 값으로 대체해 줌.


[NVL 함수의 기본 사용법]

NVL([NULL인지 여부를 검사할 데이터 또는 열(필수)], 
    [앞의 데이터가 NULL일 경우 반환할 데이터(필수)])

*입력 데이터가 NULL이 아닐 경우, 그대로 반환.

 

[NVL2 함수의 기본 사용법]

NVL2 함수는 NVL함수와 비슷하나, 데이터가 NULL이 아닐 때 반환할 데이터를 추가로 지정할 수 있음.

NVL2([NULL인지 여부를 검사할 데이터 또는 열(필수)], 
     [앞의 데이터가 NULL이 아닐 경우 반환할 데이터 또는 계산식(필수)],
     [앞의 데이터가 NULL일 경우 반환할 데이터 또는 계산식(필수)])

 

 

06-7 상황에 따라 다른 데이터를 반환하는 DECODE 함수와 CASE문

특정 열 값이나 데이터 값에 따라 어떤 데이터를 반환할 지 정할 때, DECODE 함수와 CASE문을 사용함.


[DECODE 함수]

기준이 되는 데이터를 먼저 지정한 후, 해당 데이터 값에 따라 다른 결과 값을 내보내는 함수

DECODE([검사 대상이 될 열 또는 데이터, 연산이나 함수의 결과],
       [조건 1], [데이터가 조건1과 일치할 때 반환할 결과],
       [조건 2], [데이터가 조건2과 일치할 때 반환할 결과],
       [조건 3], [데이터가 조건3과 일치할 때 반환할 결과],
       ...
       [조건 n], [데이터가 조건n과 일치할 때 반환할 결과],
       [위 모든 조건과 일치한 경우가 없을 때 반환할 결과])

*조건에 해당하는 값이 없을 때 반환 값(DECODE 함수의 맨 마지막 데이터)을 지정하지 않으면 NULL이 반환됨.


[CASE문]

특정 조건에 따라 반환할 데이터를 설정할 때 사용.

DECODE 함수와 달리 각 조건에 사용하는 데이터가 서로 상관없어도 되고, 기준 데이터 값이 같은(=) 데이터 외에도 다양한 조건 사용 가능.  

CASE([검사 대상이 될 열 또는 데이터, 연산이나 함수의 결과(선택)]
   WHEN [조건 1] THEN [조건1의 결과값이 true일 때 반환할 결과]
   WHEN [조건 2] THEN [조건2의 결과값이 true일 때 반환할 결과]
   ...
   WHEN [조건 n] THEN [조건n의 결과값이 true일 때 반환할 결과]
   ELSE [위 모든 조건과 일치하는 경우가 없을 때 반환할 결과])
END

 

반응형