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"
from s_emp;
    case-when-then作用就相当于一个表达式,把不同情况的结果显示在那一列,后面可以起别名,默认整个case-when-then就是列名.
 
   不难看出,decode和case-when-then作用是一样的,只不过写法上不同而已。两者之间是可以相互转化的。具体使用哪种方法,就看个人的习惯了。

你可能感兴趣的:(oracle,sql,数据库,职场,decode,休闲,case-when-then)