Oracle When 用法(老忘)
1. CASE WHEN 表达式有两种形式
--简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜索函数 CASEWHEN 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 /*sex 1为男生,2位女生*/ELSE NULLEND) 男生数,COUNT (CASE WHEN sex = 2 THEN 1ELSE NULLEND) 女生数FROM students GROUP BY grade;
2.3 WHERE CASE WHEN 用法
SELECT T2.*, T1.*FROM T1, T2WHERE (CASE WHEN T2.COMPARE_TYPE = 'A' AND T1.SOME_TYPE LIKE 'NOTHING%'THEN 1WHEN T2.COMPARE_TYPE != 'A' AND T1.SOME_TYPE NOT LIKE 'NOTHING%'THEN 1ELSE 0END) = 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, T2WHERE (T2.COMPARE_TYPE = 'A' AND T1.SOME_TYPE LIKE 'NOTHING%')OR (T2.COMPARE_TYPE != 'A' AND T1.SOME_TYPE NOT LIKE 'NOTHING%')
这种方法也是在特殊情况下使用,要多注意逻辑,不要弄错
转载于:https://www.cnblogs.com/Denny_Yang/archive/2013/05/03/3056042.html
Oracle When 用法(老忘)相关推荐
- oracle @spool,Oracle spool 用法小结
Oracle spool 用法小结 转自:http://wallimn.javaeye.com/blog/472182 对于SPOOL 数据的SQL,最好要自己定义格式,以方便程序直接导入,SQL语句 ...
- oracle nvl用法
oracle nvl用法 通过查询获得某个字段的合计值,如果这个值位null将给出一个预设的默认值 select nvl(sum(t.dwxhl),1) from tb_jhde t where ...
- with as 用法 oracle,with.as oracle的用法
-----*************************with..as oracle的用法 --语法: with tempName as (select ....) select ... --例 ...
- Oracle数据库用法汇总
一些Oracle数据库用法的小总结 1.使用insert into创建新表 insert into destdb.sub_contract (userid,contractid) select msi ...
- [转载]Oracle触发器用法实例详解
本文实例讲述了Oracle触发器用法.分享给大家供大家参考,具体如下: 一.触发器简介 触发器的定义就是说某个条件成立的时候,触发器里面所定义的语句就会被自动的执行. 因此触发器不需要人为的去调用,也 ...
- Oracle Number用法
Oracle Number用法 例如表:student(学生)表,表结构为: ID char(6) --学号 name VARCHAR2(10) --姓名 create table stude ...
- oracle minus 条件,Oracle minus用法详解及应用实例
Oracle minus用法 "minus"直接翻译为中文是"减"的意思,在Oracle中也是用来做减法操作的,只不过它不是传统意义上对数字的减法,而是对查询结 ...
- oracle几种例外,Oracle例外用法实例详解
本文实例讲述了Oracle例外用法.分享给大家供大家参考,具体如下: 一.例外分类 oracle将例外分为预定义例外.非预定义例外和自定义例外三种. 1).预定义例外用于处理常见的oracle错误. ...
- oracle 触发器用法,Oracle触发器用法实例详解
本文实例讲述了Oracle触发器用法.分享给大家供大家参考,具体如下: 一.触发器简介 触发器的定义就是说某个条件成立的时候,触发器里面所定义的语句就会被自动的执行. 因此触发器不需要人为的去调用,也 ...
- oracle的rownum的用法,Oracle Rownum用法
Oracle Rownum用法 Oracle提供了rownum,rownum是一个隐含的(查询结果集)字段,rownum是一个行号,从1开始. rownum隐含字段 select rownum, a. ...
最新文章
- 2021北师大丰台实验高考成绩查询,2020北京丰台区中考各高中录取分数线公布
- HTTP和HTTPS协议的区别
- 140种Python标准库、第三方库和外部工具都有了
- 信息学奥赛一本通C++语言——1021: 打印字符
- 8-汇编语言数据长度及寻址-bx/si/di/bp+ss+ptr+div+dd+dup
- 织梦php 文章采集规则,织梦DedeCms采集有什么规则?织梦DedeCms采集规则图文教程_好特教程...
- matlab 空间向量的夹角,空间两向量之间的旋转角如何求?角度范围在0-360°
- ​说了你可能不信,这是一份王者荣耀接口文档
- vue3 ts版本深度拷贝功能推荐ts-deepmerge
- 人、机客户服务质量 - 实时透视分析
- [乐意黎转载]从零开始学习jQuery (四) 使用jQuery操作元素的属性与样式
- 反思:安全需要新体系
- 【终极!!!】cannot connect to X server, couldnt connect to display
- 做智能眼镜是为了更方便地拍摄
- linux .net 控制台应用程序,使用 Visual Studio Code 创建 .NET 控制台应用程序 - .NET | Microsoft Docs...
- 简单的理解position与anchorPoint
- 单片机原理及应用 实验四 指示灯数码管的中断控制
- 【随心所记】矩阵A的行列式不等于0,是A可逆的充要条件吗?答:是这样的
- GPS北斗双模技术应用开发研究--几个基本关键词
- iView 中 render 用法总结