Oracle decode()函数和MySql case when 讲解转换

Oracle的 decode函数转换成mysql语句

      • decode()函数语句的基本表达式是:
      • 应用
      • mysql的case when
      • 转换

decode()函数语句的基本表达式是:

decode(expr1,expr2,expr3,[expr4])
(1),如果expr1 = expr2,decode函数返回expr3表达式的值;
(2),如果expr1 != expr2,decode函数返回expr4表达式的值,如果expr4未指定,则返回null;

应用

在这里插入图片描述
sign()函数的作用是,判断参数的值大于0则返回1,等于0则返回0,小于0则返回-1;

如图,当socre大于或等于90时,socre-90>=0,sign()函数返回1或0,则输出‘优秀’,

在score-90<0的情况下,再判断socre-80,socre-80>=0,sign()函数返回1或0,则输出‘良好’,

以此类推,用decode()的嵌套配合sign()函数来实现对分数的分段以及相应的输出,

最后60分以下的就default为‘不及格’就可以了

mysql的case when

Case具有两种格式。简单Case函数和Case搜索函数。

  • 简单Case函数
    CASE sex
    WHEN ‘1’ THEN ‘男’
    WHEN ‘2’ THEN ‘女’
    ELSE ‘其他’ END

  • Case搜索函数
    CASE WHEN sex = ‘1’ THEN ‘男’
    WHEN sex = ‘2’ THEN ‘女’
    ELSE ‘其他’ END

注意:Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略

转换

decode(sum(a.zfy),0,0,sum(a.yf)/sum(a.zfy)*100),2)

case when sum(a.zfy) = 0 then 0 when sum(a.zfy) = sum(a.yf)/sum(a.zfy)*100) then 2 end

case sum(a.zfy) when 0 then 0 when sum(a.yf)/sum(a.zfy)*100) then 2 end