[Oracle]単一関数-一般関数


NVL(カラム名、変更値)


カラム値がNULLの場合、値を変更して返される関数に変換されます.
値をカラムのデータ型と同じデータ型に変更しないと、エラーが発生します.
--NVL 함수를 사용하여 성과급이 NULL인 경우 0으로 변환하여 연산 처리
SELECT EMPNO,ENAME,(SAL+NVL(COMM,0))*12 ANNUAL FROM EMP;

NVL 2(カラム名、変更値1、変更値2)


カラム値がNULLでない場合は変更値1に変換され、NULLの場合は変更値2に変換されて返されます.
SELECT EMPNO,ENAME,NVL2(COMM,SAL+COMM,SAL)*12 ANNUAL FROM EMP;

DECODE(カラム名、比較値1、変更値1、比較値2、変更値2...[、デフォルト変更値])


同じ場合、カラム値と比較値を1つずつ比較して値を変更する関数に変換します.

DECODE戻り値

  • 列の値がすべての比較値と異なる-デフォルトの変更値に変換され、
  • を返します.
  • のデフォルト変更値を省略すると、NULL
  • に戻ります.
    --ANALYST : 급여*1.1, CLERK : 급여*1.2, MANAGER : 급여*1.3, 
    --PRESIDENT : 급여*1.4, SALESMAN : 급여*1.5
    SELECT EMPNO,ENAME,JOB,SAL,
    DECODE(JOB,'ANALYST',SAL*1.1,'CLERK',SAL*1.2,'MANAGER',SAL*1.3
        ,'PRESIDENT',SAL*1.4,'SALESMAN',SAL*1.5,SAL) "업무별 실급여" 
    FROM EMP;