微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

oracle case when 语句的用法详解

代码如下:
--简单Case函数
CASE sex
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他' END
--Case搜索函数
CASE
WHEN sex = '1' THEN '男'
WHEN sex = '2' THEN '女'
ELSE '其他' END

用法
2.1 SELECT CASE WHEN 用法

代码如下:
SELECT grade,COUNT (CASE WHEN sex = 1 THEN 1 /*sex 1为男生,2位女生*/
ELSE NULL
END) 男生数,
COUNT (CASE WHEN sex = 2 THEN 1
ELSE NULL
END) 女生数
FROM students GROUP BY grade;

2.2 WHERE CASE WHEN 用法

代码如下:
SELECT T2.*,T1.*
FROM T1,T2
WHERE (CASE WHEN T2.COMPARE_TYPE = 'A' AND
T1.soME_TYPE LIKE 'nothing%'
THEN 1
WHEN T2.COMPARE_TYPE != 'A' AND
T1.soME_TYPE NOT LIKE 'nothing%'
THEN 1
ELSE 0
END) = 1

2.3 GROUP BY CASE WHEN 用法

代码如下:
SELECT
CASE WHEN salary <= 500 THEN '1'
WHEN salary > 500 AND salary <= 600 THEN '2'
WHEN salary > 600 AND salary <= 800 THEN '3'
WHEN salary > 800 AND salary <= 1000 THEN '4'
ELSE NULL END salary_class,-- 别名命名
COUNT(*)
FROM Table_A
GROUP BY
CASE WHEN salary <= 500 THEN '1'
WHEN salary > 500 AND salary <= 600 THEN '2'
WHEN salary > 600 AND salary <= 800 THEN '3'
WHEN salary > 800 AND salary <= 1000 THEN '4'
ELSE NULL END;

3.1 DECODE() 函数

代码如下:
select decode(sex,'M','Male','F','Female','UnkNown')
from employees;

貌似只有Oracle提供该函数,而且不支持ANSI sql,语法上也没CASE WHEN清晰,个人不推荐使用。

3.2 在WHERE中特殊实现

代码如下:
SELECT T2.*,T2
WHERE (T2.COMPARE_TYPE = 'A' AND T1.soME_TYPE LIKE 'nothing%')
OR
(T2.COMPARE_TYPE != 'A' AND T1.soME_TYPE NOT LIKE 'nothing%')

这种方法也是在特殊情况下使用,要多注意逻辑,不要弄错。

原文地址:https://www.jb51.cc/oracle/65555.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐