case when条件表达式
SQL CASE 表达式是一种通用的条件表达式,类似于其它语言中的 if/else 语句。
CASE WHEN condition THEN result
[WHEN ...]
[ELSE result]
END
CASE 子句可以用于任何表达式可以有效存在的地方。 condition 是一个返回boolean 的表达式。 如果结果为真,那么 CASE 表达式的结果就是符合条件的 result。 如果结果为假,那么以相同方式搜寻任何随后的 WHEN 子句。 如果没有 WHEN condition 为真,那么 case 表达式的结果就是在 ELSE 子句里的值。 如果省略了 ELSE 子句而且没有匹配的条件, 结果为 NULL。
- 例子:
- SELECT * FROM test;
- a
- ---
- 1
- 2
- 3
- SELECT a,
- CASE WHEN a=1 THEN 'one'
- WHEN a=2 THEN 'two'
- ELSE 'other'
- END
- FROM test;
- a | case
- ---+-------
- 1 | one
- 2 | two
- 3 | other
所有 result 表达式的数据的类型都必须可以转换成单一的输出类型。
下面这个"简单的" CASE 表达式是上面的通用形式的一个特殊的变种。
- CASE expression
- WHEN value THEN result
- [WHEN ...]
- [ELSE result]
- END
先计算 expression 的值, 然后与所有在WHEN 子句里声明的 value 对比,直到找到一个相等的。 如果没有找到匹配的,则返回在 ELSE 子句里的 result (或者 NULL)。 这个类似于 C 里的 switch 语句。
上面的例子可以用简单 CASE 语法来写:
- SELECT a,
- CASE a WHEN 1 THEN 'one'
- WHEN 2 THEN 'two'
- ELSE 'other'
- END
- FROM test;
- a | case
- ---+-------
- 1 | one
- 2 | two
- 3 | other
CASE 表达式并不计算任何对于判断结果并不需要的子表达式。 比如,下面是一个可以避免被零除的方法:
SELECT ... WHERE CASE WHEN x <> 0 THEN y/x > 1.5 ELSE false END;
例1:一道SQL语句面试题
表内容:
2005-05-09 胜
2005-05-09 胜
2005-05-09 负
2005-05-09 负
2005-05-10 胜
2005-05-10 负
2005-05-10 负
如果要生成下列结果, 该如何写sql语句?
胜 负
2005-05-09 2 2
2005-05-10 1 2
- create table #tmp(rq varchar(10),shengfu nchar(1))
- insert into #tmp values('2005-05-09','胜')
- insert into #tmp values('2005-05-09','胜')
- insert into #tmp values('2005-05-09','负')
- insert into #tmp values('2005-05-09','负')
- insert into #tmp values('2005-05-10','胜')
- insert into #tmp values('2005-05-10','负')
- insert into #tmp values('2005-05-10','负')
- select rq, sum(case when shengfu='胜' then 1 else 0 end)'胜',
- sum(case when shengfu='负' then 1 else 0 end)'负'
- from #tmp group by rq
- ----------------------------------------------------------
例3:有一张表,里面有3个字段:语文,数学,英语。其中有3条记录分别表示语文70分,数学80分,英语58分,请用一条sql语句查询出这三条记录并按以下条件显示出来(并写出您的思路):
大于或等于80表示优秀,大于或等于60表示及格,小于60分表示不及格。
显示格式:
语文 数学 英语
及格 优秀 不及格
----------------------------------------------------------
- select
- (case when 语文>=80 then '优秀'
- when 语文>=60 then '及格'
- else '不及格' end) as 语文,
- (case when 数学>=80 then '优秀'
- when 数学>=60 then '及格'
- else '不及格' end) as 数学,
- (case when 英语>=80 then '优秀'
- when 英语>=60 then '及格'
- else '不及格' end) as 英语,
- from table
case when条件表达式相关推荐
- Oracle入门(十四E)之条件表达式case和deocde函数
一.表达式 (1)条件表达式 共有两种条件表达式,即 CASE 表达式和DECODE 表达式.就 CASE 比较两个表达式而言,该表达式在逻辑上等效于之前学习的NULLIF 函数.如果两个表达式相等, ...
- Oracle数据库:条件表达式case when then else end,decode函数,oracle单行函数练习示例
Oracle数据库:条件表达式case when then else end,decode函数,oracle单行函数练习示例 2022找工作是学历.能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很 ...
- 改善代码设计 —— 简化条件表达式(Simplifying Conditional Expressions)
系列博客 1. 改善代码设计 -- 优化函数的构成(Composing Methods) 2. 改善代码设计 -- 优化物件之间的特性(Moving Features Between Objects) ...
- django 1.8 官方文档翻译:2-5-9 条件表达式
条件表达式 New in Django 1.8. 条件表达式允许你在过滤器.注解.聚合和更新操作中使用 if ... elif ... else的逻辑.条件表达式为表中的每一行计算一系列的条件,并且返 ...
- 【C语言探索之旅】 第一部分第六课:条件表达式
内容简介 1.课程大纲 2.第一部分第六课:条件表达式 3.第一部分第七课预告:循环语句 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏. ...
- Oracle学习:条件表达式及分组函数
一.条件表达式 (1)使用 case when select empno, ename, job, sal "涨前薪水",case jobwhen 'PRESIDENT' then ...
- java条件运算符类型转换_Java运算符,条件表达式,类型转换
运算符 首页要知道计算机最基本的功能就是执行数学运算,那Java中有那些现实中的加,减,乘,除呢 算术运算符 假设A=10,B=5 + 加法 A+B=15 - 减法 A-B=5 乘法,不像现实中的x, ...
- DB2 CASE/IF 条件控制语句
DB2 CASE/IF 条件控制语句 ╭──╮╭──╮╭──╮╭──╮ │╭─╯│╭╮││╭─╯│╭─╯ ││ │╰╯││╰─╮│╰─╮ ││ │╭╮│╰─╮││╭─╯ │╰─╮││││╭─╯││╰─ ...
- JavaScript实现:如何写出漂亮的条件表达式
摘要:就让我们看看以下几种常见的条件表达场景,如何写的漂亮! 本文分享自华为云社区<如何写出漂亮的条件表达式 - JavaScript 实现篇>,原文作者:查尔斯. 条件表达式,是我们在c ...
最新文章
- Android笔记之ViewModel的使用示例
- SpringMVC 实例应用 -- 不同方式控制器实现与参数传递
- 04737 c++ 自学考试2019版 第六章课后练习 程序设计题 1
- Docker+Teamcity+Maven+SVN搭建持续集成环境
- 前端跨域问题及解决方案
- matplotlib创建图的基本方法
- 项目管理——N个模板
- python实现app自动签到器_python实现网页自动签到功能
- 如何快速更换ip地址?
- Paxos 实现日志复制同步(Basic Paxos)
- 百度编辑器上传图片地址+上域名,让上传图片保存全路径
- JavaScript 专题之惰性函数
- java中函数的调用,java中如何调用函数
- 《需求工程——软件建模与分析》阅读笔记3
- yarn 修改国内镜像
- 基于C#实现的在线聊天室的桌面系统软件
- 【C++】指针深度解析
- 解决部署Hexo后出现的The custom domain for your GitHub Pages site is pointed at an outdated IP address警告
- c语言中json格式化输出,JSON格式化输出
- ERNIE的掩码机制代码解析
热门文章
- linux 进程管理 ppt,Linux内核结构与进程管理.ppt
- idea使用dababase tools时导出db2建表语句,索引显示错误
- 安装netframewoMS SQL SERVER 2005安装手记
- AngularJS 表单数据验证及错误信息提示
- JSON在JS和JAVA的处理
- Android:日常学习笔记(8)———探究UI开发(2)
- ELK日志管理之——logstash部署
- C++中的类所占内存空间总结
- int (*p)[4] 与 int* p[4]
- android http get