본문 바로가기
오라클 게시판/오라클 함수

[오라클 함수] DECODE 함수

by 기서무나구물 2018. 11. 17.

포스팅 목차

    오라클 SQL 함수(Oracle SQL Function) 목록 리스트 링크

    o DECODE

     


    문법

    decode::=

     


    목적

    DECODE는 일반적인 프로그래밍 언어의 IF 조건문을 오라클 SQL 또는 PL/SQL 에서 사용하기 위하여 만들어진 오라클 함수이다. 따라서 일반 프로그래밍 언어의 IF 조건문이 수행할 수 있는 기능을 포함하고 있다. (CASE WHEN 구문을 처리 가능)

    select시의 decode 사용은 from 절만 빼고 어디에서나 사용할 수 있다. 단. 비교 연산은 '='만 가능하다.

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

     

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

    • 만약 expr과 search가 문자 데이터라면, 오라클은 비 공백 비교 어의(semantics)를 비교한다. expr, search, result의 데이터형은 CHAR, VARCHAR2, NCHAR, NVARCHAR2이다. 반환되는 문자열은 VARCHAR2 데이터형이고, 최초의 result 파라미터와 같은 문자 세트의 문자열이다.
    • 만약 처음 search-result 쌍이 수치라면, 오라클은 모든 search-result 표현과 처음 expr을 비교하고, 수치 우선순위가 가장 높은 인수를 판단하여 나머지 인수를 그 데이터형에 암묵적으로 변환하고, 그 데이터형을 반환한다.

    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이다.

     


    참고

     


    예제

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

    Oracle Program
    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;

     

      --------------------------------------------  

    오라클 SQL 함수(Oracle SQL Function) 목록 리스트 링크

     

    [SQL, Pandas, R Prog, Dplyr, SQLDF, PANDASQL, DATA.TABLE] SQL EMP 예제로 만나는 테이블 데이터 처리 방법 리스트 링크 링크
    반응형

    댓글