sql语句中,decode和case when语句的区别有哪些?并且哪个更实用?

2025-03-23 06:09:00
推荐回答(2个)
回答1:

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

回答2:

case when 是标准的SQL语句。而decode只有oracle数据库才支持。