Oracle函数之case和decode的用法区别及性能比较

2014-11-24 18:44:42 · 作者: · 浏览: 0

1)case表达式 或者


2)decode函数


来实现逻辑判断。Oracle的DECODE函数功能很强,灵活运用的话可以避免多次扫描,从而提高查询的性能。而CASE是9i以后提供的语法,这个语法更加的灵活,提供了IF THEN ELSE的功能。


case表达式


case表达式,可分两种,简单和搜索,简单case后接表达式,如:



对于简单的case需要几点注意:


1)寻找when的优先级:从上到下


2)再多的when,也只有一个出口,即其中有一个满足了expr就马上退出case


3)不能把return_expr和else_expr指定为null,而且,expr、comparison_expr和return_expr的数据类型必须相同。



搜索case:


CASE WHEN condition THEN return_expr


[WHEN condition THEN return_expr]


...


ELSE else_expr


END


例子:


用decode可以违反第3NF(行不可再分,列不可再分,列不可重复):列重复