JIMINOTE

[Oracle] DECODE 함수, SUBSTR 함수 본문

데이터베이스/Oracle

[Oracle] DECODE 함수, SUBSTR 함수

김짐인 2020. 8. 30. 17:38

DECODE 함수

DECODE 함수는 프로그래밍에서의  if else 와 비슷한 기능을 수행한다. 간단한 사용방법은 아래와 같다.

예) DECODE(컬럼, 조건1, 결과1, 조건2, 결과2, 조건3, 결과3..........) 

 

 

 

SUBSTR 함수

SUBSTR 함수는 문자단위로 시작위치와 자를 길이를 지정하여 문자열을 자른다.

예) SUBSTR("문자열", "시작위치", "길이")

 

 

 

1. EMP 테이블에서 사원들은 입사일(Hiredate)을 기준으로 3개월이 지난 후 첫 월요일에 정직원이 됩니다.

사원들이 정직원이 되는 날짜(R_JOB)를 YYYY-MM-DD 형식으로 출력해 주세요.

단, 추가 수당(COMM)이 없는 사원의 추가 수당은 N/A로 출력하세요.

SELECT EMPNO, ENAME, HIREDATE,
TO_CHAR(NEXT_DAY(ADD_MONTHS(HIREDATE,3),'월요일'),'YYYY-MM-DD') AS R_JOB ,
DECODE(COMM,NULL, 'N/A',COMM) COMM
FROM EMP;

 

 

2. EMP 테이블의 모든 사원을 대상으로 직속 상관의 사원 번호(MGR)를 아래와 같은 조건을 기준으로
변환해서 CHG_MGR 열에 출력하세요.

 - 직속 상관의 사원 번호가 존재하지 않을 경우 : 0000
 - 직속 상관의 사원 번호 앞 두 자리가 75일 경우 : 5555
 - 직속 상관의 사원 번호 앞 두 자리가 76일 경우 : 6666
 - 직속 상관의 사원 번호 앞 두 자리가 77일 경우 : 7777
 - 직속 상관의 사원 번호 앞 두 자리가 78일 경우 : 8888

 - 그 외 직속 상관 사원 번호의 경우 : 본래 상관의 사원 번호 그대로 출력

SELECT EMPNO, ENAME,
DECODE(MGR,NULL, ' ',MGR) MGR,
DECODE(SUBSTR(MGR,1,2), NULL , '0000',
                    '75','5555',
                    '76','6666',
                    '77','7777',
                    MGR) AS CHG_MGR
FROM EMP;