반응형
안녕하세요. 이번에는 Oracle 함수인 DECODE 기능에 대해 사용하는 방법에 대해 포스팅하겠습니다.
DECODE는 쉽게 말해서 Java의 IF와 성격이 비슷한 기능이라고 생각하시면 편하겠습니다.
DECODE(조건 컬럼, 값1, 값1이 일치 시 출력 내용, 값2, 값2이 일치 시 출력 내용, 앞의 값들과 일치하지 않는 경우)
아래의 쿼리를 통해 익혀보겠습니다.
1. 샘플 데이터 삽입
CREATE TABLE sql_test_a
(
RANK_ VARCHAR2(4000 BYTE),
FIRST_NAME VARCHAR2(200 BYTE),
LAST_NAME VARCHAR2(200 BYTE)
);
INSERT INTO sql_test_a (RANK_, FIRST_NAME, LAST_NAME) VALUES ('1', 'John', 'Snow');
INSERT INTO sql_test_a (RANK_, FIRST_NAME, LAST_NAME) VALUES ('2', 'Mike', 'Tyson');
INSERT INTO sql_test_a (RANK_, FIRST_NAME, LAST_NAME) VALUES ('3', 'Bill', 'Keaton');
INSERT INTO sql_test_a (RANK_, FIRST_NAME, LAST_NAME) VALUES ('4', 'Greg', 'Mercury');
INSERT INTO sql_test_a (RANK_, FIRST_NAME, LAST_NAME) VALUES ('5', 'Steve', 'Jobs');
INSERT INTO sql_test_a (RANK_, FIRST_NAME, LAST_NAME) VALUES ('6', 'Johhny', 'Depp');
2. DECODE를 이용해 RANK_(등수)가 1,2,3 인 경우에 금메달, 은메달, 동메달. 나머지는 X로 조회
SELECT DECODE(RANK_, '1', 'GOLD', '2', 'SILVER', '3', 'BRONZE', 'X') as MEDAL,
LAST_NAME
FROM sql_test_a;
위의 쿼리를 이용해 1등인 경우에 GOLD, 2등 SILVER, 3등 BRONZE, 나머지 등수는 메달 없음 으로 조회하였습니다.
DECODE(조건 컬럼, 값1, 값1이 일치 시 출력 내용, 값2, 값2이 일치 시 출력 내용, 앞의 값들과 일치하지 않는 경우)
DECODE(RANK_, '1', 'GOLD', '2', 'SILVER', '3', 'BRONZE', 'X') as MEDAL
- RANK_ : 비교할 컬럼
- '1' : 값 1
- 'GOLD' : 값 1 일치할 경우
- ...
- 'X' : 앞의 값들에 일치하지 않을 경우
+ DECODE로 즉석 데이터 테이블 생성하기
SELECT DECODE(ROWNUM, '1', '11', '2', '22') AS COL1,
DECODE(ROWNUM, '1', '33', '2', '44') AS COL2
FROM DUAL
CONNECT BY LEVEL <= 2;
위의 쿼리 처럼 ROWNUM을 이용해 데이터를 직접 넣어서 데이터 테이블을 생성할 수도 있습니다.
단, CONNECT BY LEVEL을 사용해야하는 점을 유념하시길 바랍니다.
반응형
'DB > Oracle' 카테고리의 다른 글
[Oracle] 락 걸린 경우 조치방법 (0) | 2021.08.12 |
---|---|
[Oracle] 과거 데이터 조회 방법 (0) | 2021.07.30 |
[Oracle] 특정 기간 데이터 조회 방법 (0) | 2021.06.30 |
[Oracle] 다른 계정에 테이블 권한 부여 방법 (0) | 2021.06.02 |
[Oracle] oracle 설치 없이 연습할 수 있는 사이트 (0) | 2021.05.28 |