DECODE 함수

설명

DECODE 함수는 CASE 문과 마찬가지로 IFTHENELSE 문과 동일한 기능을 수행한다. 인자로 지정된 expressionsearch를 비교하여, 같은 값을 가지는 search에 대응하는 result를 결과로 반환한다. 만약, 같은 값을 가지는 search가 없다면 default 값을 반환하고, default 값이 생략된 경우에는 NULL을 반환한다. 비교 연산의 대상이 되는 expressionsearch는 데이터 타입이 동일하거나 서로 변환 가능해야 하고, 지정된 모든 result 값의 유효 숫자를 포함하여 표현할 수 있도록 결과 값의 소수점 아래 자릿수가 결정된다.

구문

DECODE( expression, search, result [, search, result]* [, default] )

 

result :

result | default | NULL

DECODE(a, b, c, d, e)는 다음의 CASE 문장과 같은 의미를 가진다.

CASE WHEN a = b THEN c

WHEN a = c THEN d

ELSE e

END

예제

SELECT * FROM case_tbl;

 

=== <Result of SELECT Command in Line 1> ===

 

            a

=============

            1

            2

            3

         NULL

 

--Using DECODE function to compare expression and search values one by one

SELECT a, DECODE(a, 1, 'one', 2, 'two', 'other') FROM case_tbl;

 

===================================

            1  'one'

            2  'two'

            3  'other'

         NULL  'other'

 

 

--result types are converted to a single type containing all of significant figures

SELECT a, DECODE(a, 1, 1, 2, 1.2345, 1.234567890) FROM case_tbl;

 

===================================

            1  1.000000000

            2  1.234500000

            3  1.234567890

         NULL  1.234567890

 

--an error occurs when result types are not convertible

SELECT a, DECODE(a, 1, 'one', 2, 'two', 1.2345) FROM case_tbl;

 

===================================

ERROR