◆ 컬럼값 변경 출력 키워드 - DECODE, CASE

원래의 컬럼값이 아닌 컬럼값의 조건에 따라 다른값으로 출력할 수 있는 키워드 중 DECODE 와 CASE가 있다.


▶ DECODE

 DECODE(변경할컬럼명, before값 조건, after 변경할 값, ... , 디폴트값) 형태로 사용되며, DECODE안에 DECODE를 중첩으로 사용할 수 있다.

SELECT deptno, DECODE(deptno, 10 , 'ACCOUNTING' ,
                              20 , 'RESEARCH' ,
                              30 , 'SALES', 'OPERATIONS') name
  FROM dept;

// deptno값이 10이면 ACCOUNTING 바꿔서 출력하고, 
20->RESEARCH, 
30->SALSE
나머지-> OPERATIONS 출력 된다.


  • 아래와 같이 다양한 방법으로 사용할 수 있다.
SELECT deptno, DECODE(deptno, 10 , SUM(sal),
                              20 , MAX(sal),
                              30 , MIN(sal)) sal
  FROM emp
 GROUP BY deptno; 


▶ CASE

DECODE의 조건은 ==로써 사용되지만, CASE에서는 좀 더 다양한 비교연산을 사용할 수 있다는 장점이 있다.

사용예

SELECT deptno, 
       CASE deptno
         WHEN 10 THEN 'ACCOUNTING'
         WHEN 20 THEN 'RESEARCH'
         WHEN 30 THEN 'SALES'
         ELSE 'OPERATIONS'
       END as "Dept Name"
  FROM dept;

SELECT ename ,
       CASE
          WHEN sal < 1000  THEN sal+(sal*0.8)
          WHEN sal BETWEEN 1000 AND 2000 THEN sal+(sal*0.5)
          WHEN sal BETWEEN 2001 AND 3000 THEN sal+(sal*0.3)
          ELSE sal+(sal*0.1)
       END sal
  FROM emp; 


◆ select 임의의 고정 값 출력

select 쿼리문에서 고정값이 담겨있는 가상의 새로운 컬럼을 출력하는 방법으로,
문자열 as 컬럼명을 통한 추출 방법이 있다.

select 
    V_CATEGORYCD1,
    V_CATEGORYCD2,
    V_CATEGORYCD3, 
    '고정값' as 뉴컬럼 from SHOP_PRODUCT_CATEGORY;


◆ 문자 길이 맞춰서 출력하기( LPAD, RPAD )

특정 컬럼의 값의 길이를 모두 동일하게 맞추고자 할 때 사용하는 키워드로 LPAD와 RPAD가 있다.
LPAD는 왼쪽에서 길이에 맞게 채워주고, RPAD는 오른쪽으로 길이에 맞는 문자를 채워준다.

select LPAD(AGE, 5, '*') from member;
// => 값이30이면 ***30
select RPAD(AGE, 5, '*') from member;
// => 값이30이면 30***