Oracle CASE WHEN 用法介绍
来源:互联网 发布:淘宝众筹 淘宝怎么不管 编辑:程序博客网 时间:2024/05/01 13:30
1. 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. CASE WHEN 在语句中不同位置的用法
2.1 SELECT CASE WHEN 用法
SELECT grade, COUNT (CASE WHEN sex = 1 THEN 1
ELSE NULL
END) 男生数,
COUNT (CASE WHEN sex = 2 THEN 1
ELSE NULL
END) 女生数
FROM students GROUP BY grade;
2.3 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.4 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.关于IF-THEN-ELSE的其他实现
3.1 DECODE() 函数
select decode(sex, 'M', 'Male', 'F', 'Female', 'Unknown')
from employees;
貌似只有Oracle提供该函数,而且不支持ANSI SQL,语法上也没CASE WHEN清晰,个人不推荐使用。
3.2 在WHERE中特殊实现
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%')
这种方法也是在特殊情况下使用,要多注意逻辑,不要弄错。
0 0
- Oracle CASE WHEN 用法介绍
- Oracle CASE WHEN 用法介绍
- Oracle CASE WHEN 用法介绍
- Oracle CASE WHEN 用法介绍
- Oracle CASE WHEN 用法介绍
- Oracle CASE WHEN 用法介绍
- Oracle CASE WHEN 用法介绍
- Oracle CASE WHEN 用法介绍
- Oracle CASE WHEN 用法介绍
- Oracle CASE WHEN 用法介绍
- Oracle CASE WHEN 用法介绍
- Oracle CASE WHEN 用法介绍
- Oracle CASE WHEN 用法介绍
- Oracle CASE WHEN 用法介绍
- Oracle CASE WHEN 用法介绍
- Oracle CASE WHEN 用法介绍
- Oracle CASE WHEN 用法介绍
- Oracle CASE WHEN 用法介绍
- markdown语法
- Same Tree
- Spring学习笔记—最小化Spring XML配置
- 图片验证码生成
- 【LeetCode】87. Scramble String
- Oracle CASE WHEN 用法介绍
- mysql数据库(1)
- Spring + Maven + Dubbo + MyBatis + Linner + Handlebars-Web开发环境搭建
- 通过Python实现定时器和利用魔法方法改善友好交互
- Best Time to Buy and Sell Stock
- InteliJ Idea 2017.1 for Mac 版 objc[4163]: Class JavaLaunchHelper is implemented in both XXX提示
- Js 函数与对象的区别及原生链的理解
- 算法训练 输出米字形
- Apriori算法