啃食Oracle:条件分支表达式CASE

CASE表达式是条件分支表达式,类似于if … elsif …else条件分支语句。常见用法是在select的表达式列表中使用。

以下图示来自于官方文档

上图的文字描述为

CASE { simple_case_expression

| searched_case_expression

}

[ else_clause ]

END

从上述图示和文字描述中可看出CASE表达式以CASE开始条件部分,END结束。ELSE为可选部分,条件部分为必选,条件部分又分为两种情况:

1、简单模式,如下图

文字描述为

expr

{ WHEN comparison_expr THEN return_expr }...

所谓简单模式,就是条件判断写在when 前,when后直接接值,如下:

declarea int:=5;begindbms_output.put_line(case a when 1 then 1 when 5 then 5 end);end;

返回结果为5

定义变量a,以a为判定条件,当符合不同的比较值的时候返回then 后面的结果

没有符合结果的时候返回null

declarea int:=2;begindbms_output.put_line(case a when 1 then 1 when 5 then 5 end);end;

返回结果为null

简单模式类似decode表达式

2、条件查询表达式

文字描述为

{ WHEN condition THEN return_expr }...

条件查询可理解成将条件语句放入到when 子句中,这样可以使用复杂的表达式进行判断,如范围表达式等,如下例子:

declarea int:=7;begindbms_output.put_line(case when a>1 then 1 when a>5 then 5 end);end;

返回结果是1,后面a>5也是符合的,为啥没返回呢,因为找到第一个符合的条件后立即返回,不再向后比较,注意,此处容易犯错!

declarea int:=0;begindbms_output.put_line(case when a>1 then 1 when a>5 then 5 end);end;

返回null,没有符合语句返回null

CASE表达式的ELSE部分

文字描述为

ELSE else_expr

注意前面的例子中没加入else的时候针对不符合条件的时候返回null,else子句就是处理例外情况的。

简单模式:

declarea int:=7;begindbms_output.put_line(case a when 1 then 1 when 5 then 5 else 100 end);end;

由于没有符合的情况,所以返回else的100。

条件查询模式:

declarea int:=1000;begindbms_output.put_line(case when a<1 then 1 when a<105 then 5 else 1000 end);end;

由于没有符合的条件,所以返回else字句的返回值。

CASE是一种非常好用的表达式,常常和select查询语句中联合使用。

下列语句用于判断工资水平高低,由于是范围判断,所以无需使用else语句

select ename,case when sal <= 1500 then '低工资' when sal between 1500 and 2500 then '中等工资' when sal>2500 then '高工资' end sallevel from emp;

综上就是CASE表达式的简要用法,CASE表达式在MySQL、Sql SERVER中都可以使用,已列入SQL标准。CASE在数据分析中尤其重要。

case when then else_啃食Oracle:条件分支表达式CASE相关推荐

  1. mysql 条件分支_记mysql条件分支语句CASE WHEN THEN ELSE END的使用

    linux 记录用户操作记录日志 ################################################################################### ...

  2. php if多条件_通过几个案例掌握shell编程条件分支结构

    php中文网课程 每日17点准时技术干货分享 本文为php中文网认证作者:"齐天大圣"投稿. shell脚本是任何一个后端程序员都应该去掌握的技能,今天,我们来一起学习下它的条件分 ...

  3. oracle的分支语句,Oracle中的分支语句

    Oracle中的分支语句,Oracle条件分支语句:pl/sql中提供了三种分支语句:if-- then, if---then--else,if--then--ifesle,Oracle条 Oracl ...

  4. Oracle入门(十四E)之条件表达式case和deocde函数

    一.表达式 (1)条件表达式 共有两种条件表达式,即 CASE 表达式和DECODE 表达式.就 CASE 比较两个表达式而言,该表达式在逻辑上等效于之前学习的NULLIF 函数.如果两个表达式相等, ...

  5. Oracle数据库:条件表达式case when then else end,decode函数,oracle单行函数练习示例

    Oracle数据库:条件表达式case when then else end,decode函数,oracle单行函数练习示例 2022找工作是学历.能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很 ...

  6. Oracle条件表达式

    条件表达式: case 字段:when 值1 then 值when 值1 then 值else默认值endcase...when 通用写法 mysql和oracle中都可以使用Oracle特有的写法: ...

  7. oracle 条件查询,比较运算符,逻辑运算符,特殊运算符,判断空值,大小写敏感,多行,多列子查询...

    oracle 条件查询,比较运算符,逻辑运算符,特殊运算符,判断空值,大小写敏感,多行,多列子查询博客分类: oracle OracleSQL 比较运算符 >,<:大于,小于 >=. ...

  8. .net一个函数要用另一个函数的值_【195期】MySQL中的条件判断函数 CASE WHEN、IF、IFNULL你会用吗?...

    点击上方"Java面试题精选",关注公众号 面试刷图,查缺补漏 >>号外:往期面试题,10篇为一个单位归置到本公众号菜单栏->面试题,有需要的欢迎翻阅 阶段汇总集 ...

  9. tensorflow随笔-条件语句-tf.case

    tf.case tf.case( pred_fn_pairs, default=None, exclusive=False, strict=False, name='case' ) 创建case操作 ...

最新文章

  1. Runtime类与Process类
  2. 每周学算法/读英文/知识点心得分享 2.25 - 3.1
  3. linux在所有文件中查找某一个字符
  4. 输入序列连续的序列检测
  5. 公众号H5 VUE获取CODE
  6. windows dc linux,active-directory – Linux AD集成,使用Windows Server 2012 DC时无法登录
  7. 嵌入式Linux系统编程学习之六make工程管理和Makefile
  8. 问题 I: A+B Problem : Input/Output Practice 山东科技大学OJ C语言
  9. 微信php签名验证_微信公众平台安全模式消息体签名及加解密PHP代码示例
  10. bcd 初始化库系统卷失败_开源IP地址管理系统,告别传统IP统计方式(安装部署篇)
  11. 银保监会:防范以“元宇宙”名义进行的非法集资 | 产业区块链发展周报
  12. n皇后问题-c语言实现
  13. 液晶VGH、 VGL电路解析
  14. python考试分几级_全国计算机等级考试2级分几类?到底怎么考啊?
  15. Go语言(Golang)超时机制
  16. 添加个人博客音乐外链
  17. Java入门(四)JAVA SE 02
  18. Android 百度地图marker中图片不显示的解决方案
  19. Win7下硬盘响声大的解决办法
  20. Pacemaker-学习总结(概念、结构)

热门文章

  1. NLP之路-一点小语言工具函数
  2. [SCM]源码管理 - SVN的备份和还原
  3. 随想录(搭建自己嵌入式项目的编译系统)
  4. 随想录(编写用户侧定时器)
  5. java由谁创建_透析Java本质-谁创建了对象,this是什么
  6. 驻马店市机器人科技馆_科技创新体验馆,科技馆机器人
  7. 安装sphinx的php扩展,安装php扩展sphinx
  8. c语言学生综合测评系统_综合测评线上系统帮助文档
  9. 怎么查看页面跳转过程_fastcapture注册码怎么获取?FastStone注册码分享
  10. word双引号间距大_微软判定:Word 编辑英文句号后“两个空格”为拼写异常