본문 바로가기

IT/Firebird

Firebird decode문, case문

Firebird 에서 DECODE문도 작동된다. 이상하게 CASE문은 적응이 잘 안된다. 아주 오래전 부터 오라클에서 주로 DECODE문을 사용해온 탓이다. 앞으로는 CASE문을 자주 이용해야지...


오라클 처럼 사용도 가능하다. 조건문에 사용해도 되고 group 문을 이용해 다양한 계산도 할 수 있다.

ex> where 문에서 사용 예

 - where decode(c.casno,'0000',1,'9000',1,'9999',1,0) = 0



DECODE()

Syntax: 

DECODE ( <test-expr>,

         <expr>, result

         [, <expr>, result ...]

         [, defaultresult] )


CASE <test-expr>

   WHEN <expr> THEN result

   [WHEN <expr> THEN result ...]

   [ELSE defaultresult]

END


Example

select name,

       age,

       decode( upper(sex),

               'M', 'Male',

               'F', 'Female',

               'Unknown' ),

       religion

from people



Simple CASE

Syntax: 

CASE <test-expr>

   WHEN <expr> THEN result

   [WHEN <expr> THEN result ...]

   [ELSE defaultresult]

END


Example: 

select name,

       age,

       case upper(sex)

         when 'M' then 'Male'

         when 'F' then 'Female'

         else 'Unknown'

       end,

       religion

from people



Searched CASE

Syntax: 

CASE

   WHEN <bool_expr> THEN result

   [WHEN <bool_expr> THEN result ...]

   [ELSE defaultresult]

END


Example: 

CanVote = case

            when Age >= 18 then 'Yes'

            when Age <  18 then 'No'

            else 'Unsure'

          end;