오라클 CASE WHEN 문법과 DECODE 문법의 예제를 알아보자
오늘은 오라클의 case 문과 decode 문에 대해서 포스팅을 해보려고 합니다.
case 문과 decode 문을 사용할 때는
일반적으로 프로그래밍을 할 때 if 문을 사용하는 것과 동일한 용도로 sql 에서 사용하겠죠?
아래는 오라클 공식 사이트에서 제공하는
CASE 와 DECODE 의 문법을 정리해놓은 그림입니다.
딱 한눈에 봐도 CASE 문을 매우 복잡해 보이고
DECODE 는 간단해보이지 않나요??
그럼 사용방법을 알아보겠습니다.
CASE 문법
simple case expression 과 search case expression 으로 나뉘어져있지요?
simple case expression
SELECT cust_last_name
, CASE credit_limit WHEN 100 THEN 'Low'
WHEN 5000 THEN 'High'
ELSE 'Medium'
END
FROM customers;
credit_limit 가 100 이면 Low, 5000 이면 High , 이도저도 아니면 Medium 을 출력하는 문장입니다.
위처럼 credit_limit 를 기준으로 결과값을 도출해내는 것이 simple case expression 입니다.
search case expression
SELECT AVG(CASE WHEN e.salary > 2000 THEN e.salary ELSE 2000 END) "Average Salary"
FROM employees e;
salary 가 2000 보다 크면 salary 값을 출력, 아니면 ( 2000보다 같거나 작으면 ) 2000 을 입력해서 평균 급여를 출력하는 문장입니다.
CASE 문 뒤에 특정필드를 기준으로 값을 비교해서 TRUE 값을 찾는것과
WHEN 절이 나온 후 기준필드의 특정값과 비교를 하느냐가 차이점입니다.
DECODE 문법
그렇다면 이번에는 위의 문장을 DECODE 문법으로 바꿔서 작성해볼까요?
SELECT cust_last_name
, DECODE ( credit_limit, 100, 'Low', 5000, 'High', 'Medium' )
, CASE credit_limit WHEN 100 THEN 'Low'
WHEN 5000 THEN 'High'
ELSE 'Medium'
END
FROM customers;
DECODE
좀 더 짧고 간단해졌죠?
편의상 사용하기 쉽고 가독성이 좋은것으로 사용하시면 될 것 같습니다.
이상으로 CASE 문법과 DECODE 문법의 사용법에 대해 알아보았습니다.
궁금한점이 있으면 답글 남겨주세요
감사합니다.
'IT > Oracle' 카테고리의 다른 글
오라클 TO_DATE 1분만에 완벽마스터로 변신 (0) | 2020.03.24 |
---|---|
오라클 계정생성, 권한부여 명령어 1초만에 습득 (2) | 2019.08.23 |
plsql developer 편의기능집합 (6) | 2017.12.06 |
오라클 최근 생성된 테이블, 뷰 확인 (0) | 2017.11.09 |
오라클 자주발생하는 에러 및 해결 (0) | 2017.09.21 |