天天看点

SQL中的decode函数和case-when-then

1.decode函数:

decode (expression, search_1, result_1, search_2, result_2, ...., search_n, result_n, default) 

    decode函数比较表达式和搜索字,如果匹配,返回结果;如果不匹配,返回default值;如果未定义default值,则返回空值。例如在表s_emp中,给特定部门的员工加不等的薪水:

select dept_id,decode(dept_id,34,salary*2, 

                                          45,salary*1, 

                                          44,salary*3) "new salary"

from s_emp;

   decode作用就相当于一个表达式,把不同情况的结果显示在那一列,后面可以起别名,默认整个decode()就是列名.

2.case-when-then:

case when expression1 then result1 when expression2 then result2 ....else result end)

case-when-then判断表达式的真假,如果为真,返回结果;如果为假,返回else值;如果未定义else值,则返回空值。例如还是上面那个例子:

select last_name,dept_id,(case when dept_id=34 then salary*2 

                                           when dept_id=45 then salary*3 

                                           else salary 

                                    end) "new salary"

    case-when-then作用就相当于一个表达式,把不同情况的结果显示在那一列,后面可以起别名,默认整个case-when-then就是列名.

   不难看出,decode和case-when-then作用是一样的,只不过写法上不同而已。两者之间是可以相互转化的。具体使用哪种方法,就看个人的习惯了。

     本文转自NightWolves 51CTO博客,原文链接:http://blog.51cto.com/yangfei520/290163,如需转载请自行联系原作者