본문 바로가기

db/oracle

Oracle DECODE 함수

반응형

Oracle DECODE 함수

 

Oracle DECODE 함수
  • Oracle DECODE 함수는 마치 프로그래밍 언어의 if-else 문과 같이, 특정 조건에 따라 다른 값을 반환하는 오라클 고유의 함수입니다. 쿼리에서 데이터를 처리하고 가공할 때 매우 유용하게 사용됩니다.
Oracle decode 기본 문법
DECODE(컬럼, 비교값1, 반환값1, 비교값2, 반환값2, ..., 기본값)
  • 컬럼 : 비교할 대상이 되는 컬럼의 이름입니다.
  • 비교값 : 컬럼의 값과 비교할 값입니다.
  • 반환값 : 비교값과 일치할 경우 반환되는 값입니다.
  • 기본값 : 모든 비교값과 일치하지 않을 경우 반환되는 값입니다.
동작 방식
  1. 컬럼의 값과 첫 번째 비교값을 비교합니다.
  2. 일치하면 첫 번째 반환값을 반환하고 함수 실행을 종료합니다.
  3. 일치하지 않으면 두 번째 비교값과 비교하고, 이와 같은 방식으로 모든 비교값을 순차적으로 비교합니다.
  4. 어떤 비교값과도 일치하지 않으면 기본값을 반환합니다.
예시
SELECT DECODE(city_code, '10', '세종',
                      20, '대전',
                      30, '인천',
                      '서울') AS city_name
FROM city;
  • 위 쿼리는 city 테이블에서 도시코드(city_code)를 기준으로 도시명(city_name)을 새롭게 생성합니다. 즉, 도시코드가가 '10'이면 '세종', '20'이면 '대전', '30'이면 '인천', 그 외에는 '서울'로 표시됩니다.
DECODE 함수의 장점
  • 간결한 표현 : 복잡한 조건문을 간단하게 표현할 수 있습니다.
  • 다양한 활용 : 데이터 가공, 값 변환, 조건에 따른 결과 생성 등 다양한 용도로 사용 가능합니다.
DECODE 함수의 단점
  • 가독성 : 복잡한 조건을 중첩해서 사용하면 가독성이 떨어질 수 있습니다.
  • 표준 SQL이 아님: Oracle 고유의 함수이므로 다른 DBMS에서는 사용할 수 없습니다.
CASE WHEN THEN ELSE END와의 비교
  • DECODE 함수와 유사한 기능을 하는 CASE WHEN THEN ELSE END 문이 있습니다. CASE WHEN THEN ELSE END는 표준 SQL 문법이며, 더 복잡한 조건 처리에 유용합니다.
  • DECODE는 간단한 조건 비교에 적합하며, CASE WHEN THEN ELSE END는 복잡한 논리 연산이나 다양한 조건을 처리해야 할 때 사용하는 것이 좋습니다.

※ Oracle DECODE 함수는 쿼리 작성 시 매우 유용한 도구입니다. 하지만 가독성이나 표준 SQL 지원 측면에서 CASE WHEN THEN ELSE END를 고려해 볼 수 있습니다. 어떤 함수를 사용할지는 쿼리의 복잡성과 가독성, 그리고 사용하는 DBMS에 따라 결정해야 합니다.

반응형

'db > oracle' 카테고리의 다른 글

오라클 nvl  (0) 2025.01.22
오라클 decode 다중조건  (0) 2025.01.21
sysdate timestamp 형 변환  (1) 2025.01.20
오라클 to_timestamp 형변환  (0) 2025.01.20
Tomcat 9.0.98 미만 버전 보안 취약점  (0) 2025.01.19