Skip Headers

오라클 10g 함수
10g Release 1 (10.1)
Go to Documentation Home
HOME
Go to Book List
ORA_home
Go to Table of Contents
연구회
Go to Index
자료실
Go to Master Index
ORA_10G
Go to Feedback page
MAIL

Go to previous page
Previous
Go to next page
Next

DECODE

문법

MAIN

decode::=
Description of decode.gif follows

그림 설명
 

목적

MAIN

DECODE는 일반적인 프로그래밍 언어의 IF문을 SQL 문자 또는 PL/SQL안으로 끌여들여 사용하기 위하여 만들어진 오라클함수이다. 따라서 일반 프로그래밍 언어의 IF문이 수행할 수 있는 기능을 포함하고 있다. select시의 decode 사용은 from 절만 빼고 어디에서나 사용할수 있다.단. 비교 연산은 '='만 가능하다.

Decode함수는 1개씩 각각의 search 값을 expr과 비교한다. 만약 expr이 search와 같으면, 오라클 데이터 베이스는 상응하는 result를 반환한다. 만약 일치하는것을 발견하지 못하면, default값을 반환한다. 만약 default가 생략되면, 오라클은 null을 반환한다.

인수는 임의의 수치형(NUMBER,BINARY_FLOAT,BINARY_DOUBLE) 또는 문자형이다.

search,result,default 값은 식으로부터 도출될수 있다. 오라클은 expr과 비교하기 전에 모든 search값을 평가하는 것이아니라, search과 expr을 비교하기 전에 각 search값을 평가한다. 그 결과 오라클은 만약 이전에 search이 expr과 같다면, 오라클은 search을 평가하지 않는다.

오라클은 비교하기 전에 expr과 각 search값을 처음 search의 데이터형으로 변환한다. 오라클은 자동적으로 처음 result와 같은 데이터형으로 반환값을 변환한다.만약 처음 result가 CHAR데이터 형이거나 NULL이라면, 오라클은 VARCHAR2형으로 반환값을 변환한다.

DECODE함수에서, 오라클은 2개의 null을 동등하게 고려한다. 만약 expr이 null이라면, 오라클은 처음 search의 결과를 null로써 반환한다.

DECODE함수에서 컴포넌트의 최대수는 expr,searches,results,default를 포함해 255이다.

 

예제

MAIN

이 예제는 warehouse_id값을 Decode한다. 만약 warehouse_id가 1이라면 함수는 'Southlake',만약 2라면 'San Francisco' 등으로 반환한다. 만약 warehouse_id가 1,2,3,4아니라면 'Non domestic'를 반환한다.

SELECT product_id,
       DECODE (warehouse_id, 1, 'Southlake', 
                             2, 'San Francisco', 
                             3, 'New Jersey', 
                             4, 'Seattle',
                                'Non domestic') 
       "Location of inventory" FROM inventories
       WHERE product_id < 1775;