하고재비

[ORACLE] NULL 관련 함수 NVL, NVL2, NULLIF 본문

Oracle 11g

[ORACLE] NULL 관련 함수 NVL, NVL2, NULLIF

DeadDE 2019. 8. 8. 19:50

NVL(expr1, expr2)

expr1이 NULL일 때 expr2를 반환.

 

SELECT NVL(manager_id, 0000)
FROM employees;

 

매니저 ID 가 NULL이면 manager_id 컬럼에 0 으로 반환.

 

NVL2(expr1, expr2, expr3)

NVL을 확장한 함수로 expr1이 NULL이 아니면 expr2를, NULL이면 expr3를 반환.

 

SELECT
    employee_id,
    salary,
    nvl2(commission_pct, salary +(salary * commission_pct), salary) AS salary2,
    commission_pct
FROM
    employees;

 

commission_pct 이 NULL 이 아닌 사원은 커미션을 계산한 급여를,

                         NULL 인 사원은 그냥 급여를 salary2 컬럼에 반환.

 

NULLIF(expr1,expr2)

 함수는 expr1과 expr2을 비교해 같으면 NULL을, 같지 않으면 expr1을 반환.

 

SELECT
    employee_id,
    TO_CHAR(start_date, 'YYYY') AS  start_year,
    TO_CHAR(end_date, 'YYYY') AS end_year,
    nullif(TO_CHAR(end_date, 'YYYY'), TO_CHAR(start_date, 'YYYY')) AS nullif_year
FROM
    job_history;

 

job_history의 start_date의 yyyy 와 end_date 의 yyyy 가 같으면 null, 다르면 start_date 의 yyyy를 반환.

 

출처 : 오라클 SQL과 PL/SQL을 다루는 기술

 

'Oracle 11g' 카테고리의 다른 글

[ORACLE] LPAD, RPAD  (0) 2019.08.08
[ORACLE] GREATEST, LEAST, DECODE  (0) 2019.08.08
[ORACLE] UNION  (0) 2019.08.07
[ORACLE] DISTINCT, GROUP BY, HAVING  (0) 2019.08.07
[ORACLE] 집계함수  (0) 2019.08.07
Comments