Database/Oracle
[SQL-Oracle]함수(Function) - 일반함수 -NVL, DECODE
sukii
2023. 11. 30. 07:00
반응형
⚫ 일반함수 : 매개변수로 전달받은 값이 특정 조건에 참(TRUE)인 경우에만 변환값으로 바꾸어 반환하는 함수
🔘 NVL(전달값,변경값) : 전달값이 NULL인 경우에만 변경값으로 변환하여 반환하는 함수
--변경값은 전달값과 동일한 자료형의 값으로만 변경 가능 - 다른 자료형의 값으로 변경할 경우 에러 발생
--EMP 테이블에 저장된 모든 사원의 사원번호,사원이름,연봉(급여*12) 검색
SELECT EMPNO,ENAME,SAL*12 ANNUAL FROM EMP;
--EMP 테이블에 저장된 모든 사원의 사원번호,사원이름,연봉((급여+성과급)*12) 검색
--성과급이 저장된 COMM 컬럼값이 NULL인 경우 연산이 불가능해 연산 처리 결과로 NULL이 검색되어 실행 오류 발생
SELECT EMPNO,ENAME,(SAL+COMM)*12 ANNUAL FROM EMP;
--NVL 함수를 사용하여 COMM 컬럼값이 NULL인 경우 0을 변환하여 연산 처리
SELECT EMPNO,ENAME,(SAL+NVL(COMM,0))*12 ANNUAL FROM EMP;
🔘 NVL2(전달값,변경값1,변경값2) : 전달값이 NULL이 아닌 경우 변경값1로 변환하여 반환하고 NULL인 경우에만 변경값2으로 변환하여 반환하는 함수
SELECT EMPNO,ENAME,(SAL+NVL2(COMM,COMM,0))*12 ANNUAL FROM EMP;
SELECT EMPNO,ENAME,NVL2(COMM,SAL+COMM,SAL)*12 ANNUAL FROM EMP;
🔘 DECODE(전달값,비교값1,변경값1,비교값2,변경값2,...[,기본값]) : 전달값을 비교값과 차례대로 비교하여 같은 경우 변경값으로 변환하여 반환하는 힘수
--비교값이 모두 다른 경우 기본값으로 변환하여 반환하지만 기본값이 생략된 경우 NULL 반환
--EMP 테이블에 저장된 모든 사원의 사원번호,사원이름,업무,급여,업무별 실급여(업무를 구분하여 실제로 지불된 급여) 검색
--업무별 실급여 - ANALYST : 급여*1.1, CLERK : 급여*1.2, MANAGER : 급여*1.3, SALESMAN : 급여*1.4, PRESIDENT : 급여*1.5
SELECT DISTINCT JOB FROM EMP;
SELECT EMPNO,ENAME,JOB,SAL,
DECODE(JOB,'ANALYST',SAL*1.1,'CLERK',SAL*1.2,'MANAGER',SAL*1.3
,'SALESMAN',SAL*1.4,'PRESIDENT',SAL*1.5,SAL) "업무별 실급여"
FROM EMP;
--EMP 테이블에 저장된 모든 사원의 사원번호,사원이름,업무,급여 검색
SELECT EMPNO,ENAME,JOB,SAL FROM EMP;
--EMP 테이블에 저장된 모든 사원의 사원번호,사원이름,급여를 검색하되 급여는 업무별로 구분하여 검색 처리하고 해당 업무가 아닌 경우 NULL 검색
SELECT EMPNO,ENAME, DECODE(JOB,'ANALYST',SAL) ANALYST,
DECODE(JOB,'CLERK',SAL) CLERK,
DECODE(JOB,'MANAGER',SAL) MANAGER,
DECODE(JOB,'SALESMAN',SAL) SALESMAN,
DECODE(JOB,'PRESIDENT',SAL) PRESIDENT
FROM EMP;
반응형