본문 바로가기

카테고리 없음

[Oracle] NULL 관련 함수

NULL 값과 관련 된 데이터를 처리하는 함수이다

 

 

NVL

null 값을 실제 값으로 변환한다 (들어갈 곳의 데이터 유형과 일치해야 함)

 

NVL(commission_pct, 0) -- commission_pct의 모든 null 값을 실제 0 값으로 저장
NVL(hire_date, '01-JAN-97') -- hire_date의 모든 null 값을 실제 '01-JAN-97' 날짜 값으로 저장
NVL(job_id, 'No Job Yet') -- job_id의 모든 null 값을 실제 'No Job Yet' 문자열 값으로 저장

 

 

NVL2

첫 번째 표현식을 검사해서 null이 아니면 두 번째 표현식을 반환하고 null이면 세 번째 표현식 반환

 

SELECT last_name, salary, commission_pct, NVL2(commission_pct, 'SAL+COMM', 'SAL') income
FROM employees
WHERE department_id IN (50, 80);

 

 

NULLIF

입력받은 두 표현식이 같으면 null을 반환하고 다르면 두 번째 인자의 표현식을 반환

 

SELECT first_name, LENGTH(first_name) "expr1",
       last_name, LENGTH(last_name) "expr2",
       NULLIF(LENGTH(first_name), LENGTH(last_name)) result
FROM employees;

 

 

COALESCE

NVL 함수와 비슷하다

첫 번째 표현식이 null이 아니면 첫 번째 표현식을, 두 번째 표현식이 null이 아니면 두 번째 표현식을... (인자 값 제한 없음)

 

SELECT last_name, employee_id,
       COALESCE(TO_CHAR(commission_pct), TO_CHAR(manager_id), 'No commission and no manager') explanation
FROM employees;