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;