1. NVL 함수 Null 값을 어떤 특정한 값(실제 값)으로 변환하는데 사용한다. 사용법> NVL(expr1, expr2) 예> NVL(comm, 0) 2. NVL2 함수 값이 Null인 경우와 Null이 아닌 경우의 리턴값이 다르다. 사용법> NVL2(col | expr, expr1, expr2) 예> NVL2(comm, 'SAL+COMM', 'SAL') 값이 Null이 아니면 'SAL+COMM'을, 값이 Null이면 'SAL'을 리턴한다. 문제> EMP 테이블에서 모든 사원들의 이름, 급여, 보너스와 보너스가 있으면 SAL+COMM을, 보너스가 없으면 SAL이라는 문자열을 출력하라. SELECT ename, sal, comm, NVL2(comm, 'SAL+COMM', 'SAL') income
ENAME SAL COMM INCOME ENAME SAL COMM INCOME 3. NULLIF 함수 두 개의 값을 비교하여 같으면 Null 값을 리턴하고 서로 다른 값을 가지면 첫번째 expr을 리턴한다. 사용법> NULLIF(expr1, expr2) 예> NULLIF(comm, 0) 4. COALESCE 함수 나열된 값을 순차적으로 체크하여 NULL이 아닌 값을 리턴해주는 함수. 사용법> COALESCE(expr1, expr2....exprn) 예> COALESCE(comm, sal, 10) 문제> EMP 테이블에서 사원의 이름, 보너스 및 급여를 출력하는데 급여가 널이면 보너스를, 보너스가 널이면 급여를 출력하시오. SELECT ename, sal, comm, COALESCE(sal, comm) ENAME SAL COMM COALESCE(SAL,COMM) ENAME SAL COMM COALESCE(SAL,COMM) 5. DECODE 함수 CASE나 IF-ELSE 문의 역할을 한다. 사용법> DECODE(col | expr, search1, result1[,search2, result2, ...][,default]) 예> DECODE(deptno, 10, sal*1.1, 20, sal*1.5, sal*1.2, sal) 문제> EMP 테이블에서 JOB이 ANALYST이면 급여 증가는 10%이고 JOB이 CLERK이면 급여 증가는 15%이고 JOB이 MANAGER이면 급여 증가는 20%이다. 다른 업무에 대해서는 급여 증가가 없다. 사원번호, 이름, 업무, 급여, 증가된 급여를 출력하여라.
SELECT empno, ename, job, sal, EMPNO ENAME JOB SAL D_SAL EMPNO ENAME JOB SAL D_SAL 6. CASE 함수 DECODE 함수와 동일하나 지원하지 않는 범위 비교가 가능하다. 사용법> CASE col | expr WHEN condition1 THEN result1 [WHEN condition2 THEN result2 .......... WHEN conditionN THEN resultN ELSE result] END 예> CASE job WHEN 'ANALYST' THEN sal *1.1 WHEN 'CLERK' THEN sal*1.15 WHEN 'MANAGER' THEN sal*1.2 ELSE sal END 위에 5.DECODE함수에서 나왔던 문제를 CASE함수로 풀면 아래와 같다. SELECT empno, ename, job, sal, |