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 用法(老忘)相关推荐

  1. oracle @spool,Oracle spool 用法小结

    Oracle spool 用法小结 转自:http://wallimn.javaeye.com/blog/472182 对于SPOOL 数据的SQL,最好要自己定义格式,以方便程序直接导入,SQL语句 ...

  2. oracle nvl用法

      oracle nvl用法 通过查询获得某个字段的合计值,如果这个值位null将给出一个预设的默认值 select nvl(sum(t.dwxhl),1) from tb_jhde t where ...

  3. with as 用法 oracle,with.as oracle的用法

    -----*************************with..as oracle的用法 --语法: with tempName as (select ....) select ... --例 ...

  4. Oracle数据库用法汇总

    一些Oracle数据库用法的小总结 1.使用insert into创建新表 insert into destdb.sub_contract (userid,contractid) select msi ...

  5. [转载]Oracle触发器用法实例详解

    本文实例讲述了Oracle触发器用法.分享给大家供大家参考,具体如下: 一.触发器简介 触发器的定义就是说某个条件成立的时候,触发器里面所定义的语句就会被自动的执行. 因此触发器不需要人为的去调用,也 ...

  6. Oracle Number用法

    Oracle Number用法 例如表:student(学生)表,表结构为: ID     char(6) --学号 name VARCHAR2(10) --姓名 create table stude ...

  7. oracle minus 条件,Oracle minus用法详解及应用实例

    Oracle minus用法 "minus"直接翻译为中文是"减"的意思,在Oracle中也是用来做减法操作的,只不过它不是传统意义上对数字的减法,而是对查询结 ...

  8. oracle几种例外,Oracle例外用法实例详解

    本文实例讲述了Oracle例外用法.分享给大家供大家参考,具体如下: 一.例外分类 oracle将例外分为预定义例外.非预定义例外和自定义例外三种. 1).预定义例外用于处理常见的oracle错误. ...

  9. oracle 触发器用法,Oracle触发器用法实例详解

    本文实例讲述了Oracle触发器用法.分享给大家供大家参考,具体如下: 一.触发器简介 触发器的定义就是说某个条件成立的时候,触发器里面所定义的语句就会被自动的执行. 因此触发器不需要人为的去调用,也 ...

  10. oracle的rownum的用法,Oracle Rownum用法

    Oracle Rownum用法 Oracle提供了rownum,rownum是一个隐含的(查询结果集)字段,rownum是一个行号,从1开始. rownum隐含字段 select rownum, a. ...

最新文章

  1. 2021北师大丰台实验高考成绩查询,2020北京丰台区中考各高中录取分数线公布
  2. HTTP和HTTPS协议的区别
  3. 140种Python标准库、第三方库和外部工具都有了
  4. 信息学奥赛一本通C++语言——1021: 打印字符
  5. 8-汇编语言数据长度及寻址-bx/si/di/bp+ss+ptr+div+dd+dup
  6. 织梦php 文章采集规则,织梦DedeCms采集有什么规则?织梦DedeCms采集规则图文教程_好特教程...
  7. matlab 空间向量的夹角,空间两向量之间的旋转角如何求?角度范围在0-360°
  8. ​说了你可能不信,这是一份王者荣耀接口文档
  9. vue3 ts版本深度拷贝功能推荐ts-deepmerge
  10. 人、机客户服务质量 - 实时透视分析
  11. [乐意黎转载]从零开始学习jQuery (四) 使用jQuery操作元素的属性与样式
  12. 反思:安全需要新体系
  13. 【终极!!!】cannot connect to X server, couldnt connect to display
  14. 做智能眼镜是为了更方便地拍摄
  15. linux .net 控制台应用程序,使用 Visual Studio Code 创建 .NET 控制台应用程序 - .NET | Microsoft Docs...
  16. 简单的理解position与anchorPoint
  17. 单片机原理及应用 实验四 指示灯数码管的中断控制
  18. 【随心所记】矩阵A的行列式不等于0,是A可逆的充要条件吗?答:是这样的
  19. GPS北斗双模技术应用开发研究--几个基本关键词
  20. iView 中 render 用法总结

热门文章

  1. HttpRunner-03-hook
  2. 自学uni-app (7)项目搭建的详细步骤、注意事项和遇到的问题
  3. 准确率、精确率、召回率、F1值
  4. 流浪星球 planet
  5. 流媒体平台影视数据分析(数据预处理与可视化)
  6. book-----好书~~~~
  7. vue项目打包后本地运行方法
  8. win10 取消系统保留20%网速,让网速马力全开
  9. TinoyOs和nesC语言
  10. iOS使用TestFlight测试流程