decode函数,case语句,nvl函数 :
1.decode()函数简介:
主要作用:将查询结果翻译成其他值
DECODE(value, if1, then1, if2, then2, if3, then3,...ifn, thenn, else)
表示如果value等于if1时,DECODE函数的结果返回then1,...,如果不等于任何一个if值,则返回else。亦即:decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)
CASE WHEN其语法如下:
2.case表达式
SELECT <myColumnSpec> =
CASE WHEN <A> THEN <somethingA>
WHEN <B> THEN <somethingB>
ELSE <somethingE> END
除了可以在select 中使用CASE 外,where 子句,group by 子句,order by 子句都可以使用;
case需要几点注意:
1)寻找when的优先级:从上到下
2)再多的when,也只有一个出口,即其中有一个满足了,myColumnSpec就马上退出case;
3.nvl函数:
格式为:NVL( string1, replace_with)
功能:如果string1为NULL,则NVL函数返回replace_with的值,否则返回string1的值。
注意事项:string1和replace_with必须为同一数据类型,除非显示的使用TO_CHAR 函数。
DECODE函数与CASE语句比较:
1)DECODE Oracle 特有;
2)CASE WHEN Oracle , SQL Server, MySQL 都可用;
3)DECODE 只能用做相等判断,但是可以配合sign函数进行大于,小于,等于的判断,CASE 可用于=,>=,<,<=,<>,is null,is not null 等的判断;
4)DECODE 使用其来比较简洁,CASE 虽然复杂但更为灵活;