반응형

오라클에서 DECODE와 CASE 함수는 SQL 문장에서 조건에 해당하는 값을 뽑아낼 때 주로 사용을 하고 있습니다. 

생각보다 작업을 하다보니 조건을 걸어서 데이터를 뽑아내야 할 상황이 많이 있는데, 이러한 방법들을 모르니까 난처할 때가 많이 있더라구요. 무엇보다 머리로는 생각을 하는데 도대체 뭘 써야할지를 모르는 그 때의 답답함... 그 중에 하나가 바로 이 DECODE함수였어요. 그래서 오늘은 DECODE에 대해서 알아보도록 하겠습니다.


오라클 조건 검색을 하는 함수 

DECODE : 알아두면 매우 편리하다!



DECODE


 - 이 함수는 조건에 따라 데이터를 다른 값이나 컬럼값으로 변경해서 추출을 해낼 수 있습니다.

 - 사용 방법은 DECODE ( Column, If1, Then1, If2, Then2 . . . )의 형태로 사용을 합니다.

 - 예를 들어 설명을 하면 [ 과일 ] 이라는 컬럼이 있을 때 If1, If2 로 [ 사과 ], [ 배 ] 가 있고, 이를 우리는 DECODE를 이용해서 [ 사과 ] == [ 1번] , [ 배 ] == [ 2번 ] 으로 변경을 해서 데이터를 추출을 할 수 있다는 뜻이 됩니다.

 - DECODE 함수 안에 DECODE를 중첩으로 사용할 수 있습니다.


1
2
3
4
5
6
7
8
9
10
11
12
-- fruit 테이블에서 사과이면 1을 배이면 2를 출력하는 SQL문입니다.
 
SELECT fruit, DECODE(fruit, '사과''1' ,
                              '배' , '2'
                              ) num
  FROM fruit;
 
FRUIT     NUM
------ ----------
사과     1
배        2
 
cs


주로 DECODE는 값을 추출해서 통계를 낼 때 주로 많이 사용을 하고 있습니다. 때에 따라서는 이를 내 맘대로 정렬을 하는데 사용을 하실 수 있습니다.



[ ORDER BY ] 와 조합을 해서 말이죠.


1
2
ORDER BY DECODE (fruit, '사과''1' , '배''2''한라봉' , '3',
                    '바나나''4');
cs



위의 쿼리를 뽑아낸다면 fruit를 [ 오름차순 ], [ 내림차순 ] 으로 했을 때 [ 한라봉 ] 이 맨 처음이나 맨 마지막에 올 수 밖에 없는 구조입니다. 하지만 저렇게 DECODE 를 이용해서 강제로 값을 바꿔버린다면 원하는 순서대로 정렬을 하실 수 있습니다. 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기