하고재비
[ORACLE] NULL 관련 함수 NVL, NVL2, NULLIF 본문
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 |