오라클에서 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 를 이용해서 강제로 값을 바꿔버린다면 원하는 순서대로 정렬을 하실 수 있습니다.
최근댓글