sql语句中,decode和case when语句的区别有哪些?并且哪个更实用?
答案:2 悬赏:50
解决时间 2021-02-15 07:00
- 提问者网友:陪我到最后
- 2021-02-15 01:14
sql语句中,decode和case when语句的区别有哪些?并且哪个更实用?
最佳答案
- 二级知识专家网友:风格单纯
- 2021-02-15 02:02
DECODE Oracle 特有
CASE WHEN Oracle , SQL Server, MySQL 都可用。
科目表: sid name;
个人信息表: tid name sex age;
成绩表: id score sid tid;
CASE WHEN 可以 等于的条件, 也可以 大于等于 之类的条件。
而 decode 好像只能 等于的条件。
下面是一个 CASE WHEN 的例子:
SELECt
tid as 学号,
COUNT(sid) AS 选择几种科目,
SUM( CASE WHEN score >=60 THEN 1 ELSE 0 END )
/ COUNT(score) AS 及格率
FROM
成绩表
GROUP BY
tid
HAVINg
COUNT(sid) >= 2
CASE WHEN Oracle , SQL Server, MySQL 都可用。
科目表: sid name;
个人信息表: tid name sex age;
成绩表: id score sid tid;
CASE WHEN 可以 等于的条件, 也可以 大于等于 之类的条件。
而 decode 好像只能 等于的条件。
下面是一个 CASE WHEN 的例子:
SELECt
tid as 学号,
COUNT(sid) AS 选择几种科目,
SUM( CASE WHEN score >=60 THEN 1 ELSE 0 END )
/ COUNT(score) AS 及格率
FROM
成绩表
GROUP BY
tid
HAVINg
COUNT(sid) >= 2
全部回答
- 1楼网友:气场征服一切
- 2021-02-15 02:18
太长了,但是看到一个问题,case when,要求返回的类型必须一直。 你看你的第一个case when语句 (case when to_char(statistic_date-payrefdate>=0) and to_char(statistic_date-payrefdate<90) then sum(a.planfee-nvl(c.payreffee,0)) else '' end) then后边返回的是一个求和,那么类型肯定是数字,而else分支,其他情况下居然返回了空字符串,字符型。这两个不一致,首先就错了。你先改了这些吧。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯