무브라더

[ORACLE] DECODE 함수 사용하기 본문

Programming/DATABASE

[ORACLE] DECODE 함수 사용하기

동스다
반응형
SMALL

요즘 회사에서 쿼리를 다루는 일이 많아지면서 쿼리에 대해 많이 부족하다고 느껴 퇴근 후 따로 공부를 하고 있다.

 

오늘 복습할 ORACLE 함수 중 하나! DECODE 함수에 대해 포스팅을 해보려고 한다.

 

 

 

DECODE 함수는 오라클 쿼리에서 가장 많이 사용하는 함수 중 하나이다.  if~else 문과 같은 역할을 하는 함수이며

CASE WHEN~THEN~ESLE END 구문과 비슷한 역할을 하지만 차이점이 존재한다.

 

DECODE는 함수고 CASE는 구문이다.

DECODESQL에서 사용할 수 없다. PL/SQL 에서만 사용할 수 있다.

CASE는 구문이므로 SQL에서도 사용이 가능하다.

 

** SQL과 PL/SQL

SQL은 RDBMS에서 데이터에 접근하기 위해 사용하는 "표준언어"

PL/SQL은 SQL을 사용하여 프로그램을 작성할 수 있게 확장해 놓은 오라클의 Procedual Language

 

 

DECODE CASE
A와 B가 같은지 판별할 때 주로 사용  A와 B 사이의 부등호 관계 (크거나 작거나)를 처리할 때
주로사용

 

1. DECODE 정의

SQL에서의 표현 의미
DECODE(A ,B, X, Y) A=B 이면 X 출력
A! B 이면 Y를 출력
DECODE(A, B, X, C, Y, Z) A=B. 이면 X 출력
A=C 이면 Y 출력
A!=B 이고 A!=C이면 Z 출력 
DECODE(A1, B, DECODE(A2, C, X, Y) , Z) A1=B 이면서 A2=C 이면 X 출력
A1=B 이면서 A2!=C 이면 Y 출력
A1!=B 이면 Z 출력
(내부 DECODE 중첩)

- 각 값에는 null도 사용가능

 

2. 사용식 (DUAL은 비어있는 테이블)

 

1) DECODE(A ,B, X, Y)

SELECT DECODE(A,B,X,Y) FROM DUAL

2) DECODE(A, B, X, C, Y, Z)

SELECT DECODE(A, B, X, C, Y, Z) FROM DUAL

3) DECODE(A1, B, DECODE(A2, C, X, Y) , Z)

SELECT DECODE(A1, B, DECODE(A2, B, X, Y), Z) FROM DUAL
반응형
LIST
Comments