고급 데이터베이스 중 하나인 오라클은 특수한 함수를 제공한다. 개발자가 조금 더 쉽고 편하게 데이터베이스를 다루며 조금 더 좋은 성능을 위해 제공되는 함수들이다. 본 포스팅에서는 오라클에서만 사용 가능한 DECODE 함수를 사용해 볼 것이다.

 

 

# DECODE 함수

  -. 다양한 언어에서 사용되는 IF-THEN-ELSE 논리와 비슷한 방식으로 표현식을 디코딩 한다.

  -. DECODE 함수는 expression을 각 search 값에 비교한 후에 디코딩 한다.

  -. 표현식이 search와 동일하면 result 값이 반환된다.

  -. default 값이 생략된 경우, search 값과 일치하는 값이 없으면 null 값이 반환된다.

 

 

 

 

# DECODE 함수의 사용

아래의 SQL 문에서는 job_id 값이 테스트 된다. job_id의 값이 'IT_PROG'이면 급여 증가율은 10%이고, 'ST_CLERK'이면 급여 증가율은 15%이고, 'SA_REP'이면 급여 증가율은 20%이다. 또한, default 값이 salary 값을 그대로 반환하기 때문에 다른 모든 직무의 경우 급여 인상은 없다.

 

 

 

이해를 조금 돕기 위해, SQL 명령문을 아래와 같이 의사 코드를 사용한 IF-THEN-ELSE 문으로 표현할 수 있다.

 

IF job_id = 'IT_PROG' THEN salary = salary*1.10
IF job_id = 'ST_CLERK' THEN salary = salary*1.15
IF job_id = 'SA_REP' THEN salary = salary*1.20
ELSE salary = salary

 

 

아래의 SQL 문에서는 다른 방법으로 DECODE 함수를 사용하는 예를 보여준다. 이 예에서는 salary를 기준으로 department_id의 값이 80인 각 사원에 대해서 세율(TAX_RATE)를 판별한다. 적용할 세율은 아래의 '월 급여 범위'에 따라 조건이 주어져 있다.

 

 

크게 어렵지 않게 오라클에서 제공하는 강력한 DECODE 함수에 대해서 알아 보았다. 기업 마다 오라클 제공 함수를 권장할 수 있고 지양할 수 있으니 ANSI SQL의 CASE 조건 표현식과 적절하게 판단해서 사용해야 한다.

 

Private comment