Oracle CASE WHEN 用法介绍
Oracle 介绍 用法 when case
2023-09-27 14:28:16 时间
--简单Case函数 CASE sex WHEN 1 THEN 男 WHEN 2 THEN 女 ELSE 其他 END --Case搜索函数 CASEWHEN sex = 1 THEN 男 WHEN sex = 2 THEN 女 ELSE 其他 END
![复制代码](https://yqfile.alicdn.com/img_51e409b11aa51c150090697429a953ed.gif)
--简单Case函数
CASE sex
WHEN 1 THEN 男
WHEN 2 THEN 女
ELSE 其他 END
--Case搜索函数
CASE
WHEN sex = 1 THEN 男
WHEN sex = 2 THEN 女
ELSE 其他 END
![复制代码](https://yqfile.alicdn.com/img_51e409b11aa51c150090697429a953ed.gif)
2. CASE WHEN 在语句中不同位置的用法 2.1 SELECT CASE WHEN 用法
![复制代码](https://yqfile.alicdn.com/img_51e409b11aa51c150090697429a953ed.gif)
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;
![复制代码](https://yqfile.alicdn.com/img_51e409b11aa51c150090697429a953ed.gif)
2.3 WHERE CASE WHEN 用法
![复制代码](https://yqfile.alicdn.com/img_51e409b11aa51c150090697429a953ed.gif)
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
![复制代码](https://yqfile.alicdn.com/img_51e409b11aa51c150090697429a953ed.gif)
2.4 GROUP BY CASE WHEN 用法
![复制代码](https://yqfile.alicdn.com/img_51e409b11aa51c150090697429a953ed.gif)
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;
![复制代码](https://yqfile.alicdn.com/img_51e409b11aa51c150090697429a953ed.gif)
3.关于IF-THEN-ELSE的其他实现 3.1 DECODE() 函数
select decode(sex, M, Male, F, Female, Unknown)
from employees;
貌似只有Oracle提供该函数,而且不支持ANSI SQL,语法上也没CASE WHEN清晰,个人不推荐使用。
SELECT T2.*, T1.*
FROM T1, T2
WHERE (T2.COMPARE_TYPE = A AND T1.SOME_TYPE LIKE NOTHING%)
OR
(T2.COMPARE_TYPE != A AND T1.SOME_TYPE NOT LIKE NOTHING%)
这种方法也是在特殊情况下使用,要多注意逻辑,不要弄错。
相关文章
- oracle下导出某用户所有表的方法
- oracle AWR深入研究分析,如何使用
- Oracle宣布很多其它的Java 9 新特性
- Oracle完善融合中间件“即服务” 云计算大数据原来可以更灵活
- Oracle 的ORION工具简单使用
- Oracle创建自增字段方法-ORACLE SEQUENCE的简单介绍
- Oracle sqlplus的arraysize
- Oracle 12c Windows安装、介绍及简单使用(图文)
- Oracle存储过程基本语法介绍
- Oracle查询数据库中所有表的记录数
- Oracle数据库中的所有用户名
- oracle coherence介绍及使用
- Linux平台下使用rman进行oracle数据库迁移
- Oracle单个数据文件超过32G后扩容
- Oracle入门笔记(一)——环境配置及简单介绍
- oracle-替换 换行符和空格符
- Oracle中CASE WHEN的用法实例
- Oracle中dual表的用途介绍
- Oracle Fusion Middleware 介绍