Operating System/ORACLE

[ORACLE] 조건부 함수 ( Case, Decode )

Growing DBA 2022. 2. 4. 11:25
728x90
반응형

* CASE 

Case 컬럼 when 비교 대상 then 실행
             [when 비교 대상 then 실행]
             .....
else 실행 
end 



-> job 칼럼을 통해서 job이 CLERK인 칼럼을 찾으면 그 로우에 해당하는 임금(sal)에 1.25를 곱한 값이 "updated_sal_info"라는 새로운 칼럼에 출력된다. 두 번째로 MANAGER를 찾고 그 로우에 해당하는 임금(sal) 값에 1.30을 곱한 값을 "updated_sal_info"라는 새로운 칼럼에 출력된다. 세 번째로 SALESMAN를 찾고 그 로우에 해당하는 임금(sal) 값에 1.40을 곱한 값이 "updated_sal_info"라는 새로운 칼럼에 출력된다. 현재 찾고 있는 특정 job 값에 대한 처리는 모두 끝난 상태이다. 하지만 이들 3가지 직무(job)에 속하지 않은 나머지 job 값들은 단순히  그 임금(sal) 값을 "updated_sal_info"라는 칼럼에 출력되도록 설정하는 것이 Else 절에서 설정한다.


* Decode          

Decode(컬럼, 비교대상, 실행,
[비교대상, 실행],
.....
[기본 설정 값])



-> Decode는 Case 문장과는 달리 If-then-else 문장을 실행하는 함수의 일종으로 Case 문장과 거의 같은 기능을 실행하게 된다. Case 문장이든 Decode 함수이든 사용자의 선호에 따라서 어느 하나의 기능을 사용하면 된다. 사용자의 이해에 편한 한 가지 방법을 정해서 자주 사용하는 것이 프로그램 작성에 편할 것이다. 

728x90
반응형