1. --case语句的种类:
  2. 1.简单case语句
  3. 语法:
  4. case exp when comexp then returnvalue
  5. ...
  6. when comexp then returnvalue
  7. else returnvalue
  8. end
  9.  
  10. caseend之间相当于一个具体的值,可以做运算,取别名,嵌套case 等等。
  11. 只要把caseend当作一个运算结果的表达式就可以了。
  12.  
  13. 举例:
  14. select cust_last_name,
  15. case credit_limit when 100 then 'low'
  16. when 5000 then 'high'
  17. else 'medium'
  18. end
  19. from customers;
  20.  
  21. 2.搜索case语句
  22. 语法:
  23. case when boolean then return value
  24. ...
  25. when boolean then return value
  26. else retur nvalue
  27. end
  28.  
  29. 举例:
  30. select case when id between 1 and 10 then 'low'
  31. when id between 20 and 30 then 'mid'
  32. when id between 40 and 50 then 'high'
  33. else 'unknow'
  34. end
  35. from product;
  36.  
  37. --简单case和搜索case之间的区别:
  38. 1. 简单case只能是when后面的表达式完全匹配case后的表达式,相当于 =,所以也不能匹配null
  39. 2. searched case可以作为比较条件,那么可以使用like、!=、between ..and、<、=、is nullis not null等,比简单case的使用更加广泛,完全可以替代简单case
  40.  
  41. --注意事项:
  42. 1.case 表达式返回的是一个确定的value,若前面的都不匹配,则返回else中的项.
  43. 2.简单case 中的表达式,when 后面的表达式类型应该全部保持一致.
  44. 3.所有的then 后面的return_value类型要保持一致.
  45. 4.对于简单case 表达式,也就是case 表达式 when…那么when null 总是取不到。也就是case 后面的表达式如果值为null,不会与when null 匹配,只会与else匹配.
  46. 5.对于searched case来说,有自动类型转换,只要条件成立就可以。
  47. 如:select case when 1='' then 1 end from dual; 其中1=''条件成立
  48.  
  49. 值得一提的是: sql中的case语句与pl/sql中的case语句的不同之处:
  50. 前者的else不是必须的,如果没有匹配就返回null;后者的else不写,则报case_not_found异常.
  51.  
  52. --case中嵌套子查询
  53. Case语句中可以使用子查询,但是必须返回一行,不可以是多行.
  54. 如:
  55. select case (select count(*) as s1 from t1 where a = 1)
  56. when (select count(*) as s2 from t1, t2 where t1.a = t2.a and t2.a = 1) then '相等'
  57. else '不相等'
  58. end
  59. from dual;

Oracle中case用法总结的更多相关文章

  1. ORACLE 中ROWNUM用法总结(转)

    ORACLE 中ROWNUM用法总结! 对于 Oracle 的 rownum 问题,很多资料都说不支持>,>=,=,between...and,只能用以上符号(<.<=.!=) ...

  2. ORACLE 中ROWNUM用法总结!

    ORACLE 中ROWNUM用法总结! 对于 Oracle 的 rownum 问题,很多资料都说不支持>,>=,=,between...and,只能用以上符号(<.<=.!=) ...

  3. 转:ORACLE 中ROWNUM用法总结!

    oracle 分页查询语句:select * from (select u.*,rownum r from (select * from userifno) u where rownum<大值) ...

  4. oracle中一些用法总结

    1. case用法: --简单case函数 case sex when '1' then 'boy' when '2' then 'girl' else '其他' end; --case搜索函数 ca ...

  5. 【LeetCode刷题】SQL-Second Highest Salary 及扩展以及Oracle中的用法

    转载于:https://www.cnblogs.com/contixue/p/7057025.html Write a SQL query to get the second highest sala ...

  6. Oracle中rownum用法警示

    今天调试代码,发现分页查询时使用Oracle中rownum的between......and用法的bug,特此总结: 参考资料:http://blog.csdn.net/lg312200538/art ...

  7. Oracle中Instr用法

    在项目中用到了Oracle中 Instr 这个函数,顺便仔细的再次学习了一下这个知识. Oracle中,可以使用 Instr 函数对某个字符串进行判断,判断其是否含有指定的字符. 其语法为:Instr ...

  8. ORACLE中dual用法详解

    基本上oracle引入dual为的就是符合语法1. 我们先从名称来说,dual不是缩写词,本身就是完整的单词.dual名词意思是对数,做形容词时是指二重的,二元的.2. Oracle中的dual表是一 ...

  9. oracle中case...when的用法

    全表的内容 case...when可以解决在显示的时候想显示别的名称的例子, 用的最多的地方就是性别, 比如上面的表中的性别是由'1'和'0'表示的, 但是实际显示出来在页面上给客户看是不可取的, 这 ...

随机推荐

  1. 解析 Javascript - this

    在函数中 this 到底取何值,是在函数真正被调用执行的时候确定下来的,函数定义的时候确定不了.  因为 this 的取值是执行上下文环境的一部分,每次调用函数,都会产生一个新的执行上下文环境.当你在 ...

  2. Java面向对象之封装 入门实例(一)

    一.基础概念 (一)面向对象的三大特征:      1.封装         2.继承          3.多态 (二)封装:隐藏实现细节,对外提供公共的访问方式(接口). 封装的体现之一:将属性都 ...

  3. python Flask

    python Flask Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请 ...

  4. python——函数

    python--函数 1.介绍: 在过去的十年间,大家广为熟知的编程方法无非两种:面向对象和面向过程,其实,无论哪种,都是一种编程的规范或者是如何编程的方法论.而如今,一种更为古老的编程方式:函数式编 ...

  5. js 中的栈和堆

    js中的栈与堆的讲解/基本数据类型与引用类型的讲解 前言:1. 学习前端,入门简单,想学好确实是一件很困难的事情,东西多而且杂,版本快速迭代,产品框架层出不穷. 2. 前端学习成本确实很高,需要不断的 ...

  6. jacascript document对象

    前言:这是笔者学习之后自己的理解与整理.如果有错误或者疑问的地方,请大家指正,我会持续更新! Document 类型表示文档,或文档的根节点,这个节点是隐藏的,没有具体的节点标签:而 html 是根标 ...

  7. 使用生成器把Kafka写入速度提高1000倍

    title: 使用生成器把Kafka写入速度提高1000倍 toc: true comment: true date: 2018-04-13 21:35:09 tags: ['Python', '经验 ...

  8. iOS 检测屏幕是否锁定 🔓 / 🔒

    1. 导入头文件 #import <notify.h> 2. 给 CFNotificationCenter 添加观察者 - (void)addLockStatusObserver { CF ...

  9. [BJOI 2011]元素

    Description 相传,在远古时期,位于西方大陆的 Magic Land 上,人们已经掌握了用魔法矿石炼制法杖的技术.那时人们就认识到,一个法杖的法力取决于使用的矿石.一般地,矿石越多则法力越强 ...

  10. [WC2013]糖果公园

    Description 题库链接 给你一棵 $n$ 个节点,有 $m$种颜色的树.每个节点上有一个颜色.定义一条树上路径的价值为 $sum_c V_c(\sum_{i=1}^{tim_c}W_i)$ ...