본문 바로가기
Database

[Oracle] DECODE( )

by JJH0100 2022. 11. 7.
728x90
반응형

DECODE 함수는 일반 개발 언어 등에서 사용중인 분기문인 IF 문을 오라클 SQL  안으로 가져온 함수. DECODE 함수는 오라클에서만 사용되는 함수로 IF 문을 사용해야 하는 조건 문을 처리할 수 있다

 

 

유형 1.

A 가 B 일 경우 ‘1’ 을 출력하는 경우

DECODE (A, B, ‘1’, null)

마지막 null은 생략 가능 합니다

 

EX

professor 테이블에서 학과번호와 교수명 , 학과명을 출력하되 deptno 101 번인 교수만 학과명을 "Computer Engineering" 으로 출력하고 101번이 아닌 교수들은 학과명에 아무것도 출력하지 마세요

SELECT deptno, name, DECODE(deptno, 101, 'Computer Engineering') "DNAME"
FROM professor;

 


 

유형 2.

A 가 B 일 경우 ‘1’ 을 출력하고 아닐 경우 ‘2’ 를 출력하는 경우

DECODE ( A, B, ‘1’ , ‘2’ )

 

EX

professor 테이블에서 학과번호와 교수명과 학과명을 출력하되 deptno 가 101 번인 교수만 "Computer Engineering" 으로 출력하고 101번이 아닌 교수들은 학과명에 “ETC” 로 출력하세요

SELECT deptno, name, DECODE(deptno, 101, 'Computer Engineering', 'ETC') "DNAME"
FROM professor;


유형 3.

A 가 B 일 경우 ‘1’ 을 출력하고 A 가 C 일 경우 ‘2’ 를 출력하고 둘 다 아닐 경우 ‘3’ 을 출력하는 경우 

DECODE ( A , B , ‘1’ , C , ‘2’ , ’3’ )

 

EX

Professor 테이블에서 교수의 이름과 학과 명을 출력하되 학과 번호가 101 번 이면 ‘Computer Engineering’ , 102 번이면 ‘Multimedia Engineering' , 103 번이면 ‘Software Engineering ‘ 나머지는 ‘ETC’ 로 출력하세요.

SELECT deptno, name, 
DECODE(deptno, 101, 'Computer Engineering', 102, 'Multimedia Engineering!', 103, 'Software Engineering', 'ETC') "DNAME"
FROM professor;

 


 

유형 4.

A 가 B 일 경우 중에서 C 가 D 를 만족하면 ‘1’을 출력하고 C 가 D가 아닐 경우 NULL 을 
출력하는 경우 ( DECODE 함수 안에 DECODE 함수가 중첩되는 경우 ) 

DECODE ( A , B , DECODE( C , D , ‘1’ , null ) )

null 은 생략 가능합니다.

 

EX

professor 테이블에서 교수의 이름과 부서번호를 출력하고 101 번 부서 중에서 이름이 "Audie Murphy" 교수에게 "BEST!" 라고 출력하고 101번 부서 중에서 이름이 "Audie Murphy" 교수가 아닌 나머지에는 NULL 값을 출력하세요. 만약 101 번 외 다른 학과에 "Audie Murphy" 교수가 있어도 "BEST!" 가 출력되면 안됩니다.

 


유형 5.

A 가 B 일 경우 중에서 C 가 D 를 만족하면 ‘1’을 출력하고 C 가 D가 아닐 경우 ‘2’ 를 출력

DECODE ( A , B , DECODE( C , D , ‘1’ , ‘2’ ) )

 

 

EX

professor 테이블에서 교수의 이름과 부서번호를 출력하고 101 번 부서 중에서 이름이 "Audie Murphy" 교수에게 비고란에 “BEST!”라고 출력하고 101번 학과의 "Audie Murphy" 교수 외에는 비고란에 “GOOD!”을 출력하고 101번 교수가 아닐 경우는 비고란이 공란이 되도록 출력하세요.

SELECT deptno, name, DECODE(deptno, 101, DECODE(name, 'Audie Murphy', 'BEST!', 'GOOD!')) "ETC"
FROM professor;

 


 

유형 6.

A 가 B 일 경우 중에서 C 가 D 를 만족하면 ‘1’을 출력하고 C 가 D가 아닐 경우 ‘2’ 를 출력 하고 A 가 B가 아닐 경우 ‘3’ 을 출력하는 경우

DECODE ( A , B , DECODE( C , D , ‘1’ , ‘2’ ),'3' )

 

EX

professor 테이블에서 교수의 이름과 부서번호를 출력하고 101 번 부서 중에서 이름이 "Audie Murphy" 교수에게 비고란에 “BEST!” 이라고 출력하고 101번 학과의 "Audie Murphy" 교수 외에는 비고란에 “GOOD!”을 출력하고 101번 교수가 아닐 경우는 비고란에 "N/A" 을 출력하세요.

SELECT deptno, name, 
DECODE(deptno, 101, DECODE(name, 'Audie Murphy', 'BEST!', 'GOOD!'), 'N/A') "ETC"
FROM professor;

728x90
반응형

'Database' 카테고리의 다른 글

[Oracle] CASE()  (0) 2022.11.07
[Oracle] DECODE( ) 연습문제  (0) 2022.11.07
[Oracle] NVL( )  (0) 2022.11.07
[Oracle] TO_NUMBER( )  (0) 2022.11.07
단일행 함수 TO_CHAR 예제  (0) 2022.11.07

댓글