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