在Oracle的SQL语句中要用到条件判断,除了decode外,还有case when。decode只能进行等式比较判断,如decode(字段,值1,结果1,值2,结果2,...,值n,结果n,默认值),当所选字段等于值1时,取结果1,等于值2时,取结果2,……,最后都不等时取默认值,而case when除了等于,可以使用大于、小于的比较,可以替代decode,更象“if ...else...”。
case when的用法类似如下:
case
when 条件1
then 结果1
when 条件2
then 结果2
.....
when 条件n-1
then 结果n-1
else 结果n
end
以case开始,以end结尾,end后面可以放别名,可以放在select后,也可以放在where中,还能嵌套,当然上面的语句可以写在一行里,只是那就可能看不清楚,分行写更明白一些。
最后说一下,在then和else后面的表达式要是一个类型的,否则Oracle会报数据类型不一致的错误,要怎么一致法?我遇到的Oracle8i中,如果是这样的的:case when ... then sysdate else sysdate-1 end,这样就会报数据类型不一致,只能改成...then sysdate-0 else sysdate-1 end,类似这样。
>> 除非说明均为原创,如转载请注明来源于http://www.stormcn.cn/post/1624.html