SQL Server case表达式的用法
★CASE表达式是一个标量表达式,它基于条件逻辑来返回一个值。因为CASE是一个标量表达式,所以它可以应用在SELECT、WHERE、HAVING以及ORDER BY子句中。
CASE表达式有两种格式:简单表达式和搜索表达式。
- 利用case做简单的表达式:
CASE简单表达式将一个值(或一个标量表达式)与一组可能的取值进行比较,并返回第一个匹配的结果。如果列表中没有值等于测试值,CASE表达式就返回其ELSE子句(如果存在)中列出的值。如果CASE表达式中没有ELSE子句,则默认将其视为ELSE NULL。
(1)按照性别:
SELECT ID ,
StudentName ,
Age ,
DepartmentID ,
ClassID ,
Sex ,
CASE Sex 【搜索:CASE】
WHEN 1 THEN 'BOY' 【搜索:WHEN Sex!=1 THEN 'GIRL‘】
ELSE 'GIRL' 【搜索: ELSE 'BOY'】
END AS SEX
FROM T_Student ;
结果如下:
简单表达式:
(2)按照班级编号:
SELECT ID ,
Sex ,
Age ,
DepartmentID ,
ClassID ,
CASE ClassID
WHEN 1 THEN 'CLASS1'
WHEN 2 THEN 'CLASS3'
WHEN 3 THEN 'CLASS3'
WHEN 4 THEN 'CLASS4'
WHEN 5 THEN 'CLASS5'
WHEN 6 THEN 'CLASS6'
ELSE 'TNE_END'
END AS CLASS
FROM T_Student ;
结果为:

2.利用case做搜索的表达式:
CASE简单表达式只有一个测试值(或表达式),它紧跟在CASE关键字后面,与WHEN子句中的一组可能值进行比较。CASE搜索表达式要更灵活些,它可以在WHERE子句中指定逻辑表达式,而不限于只进行相等性的比较。CASE搜索表达式返回结果为TRUE的第一个WHEN逻辑表达式所关联的THEN子句中指定的值。如果没有任何WHEN表达式结果为TRUE,CASE表达式就返回ELSE子句中出现的值(如果没有指定ELSE子句,则返回NULL)。
★【每个CASE简单表达式都可以转换为CASE搜索表达式-(1),但不是所有的CASE搜索表达式都可以转换为CASE简单表达式-(2)】。
(1):按照ClassID的值
SELECT ID ,
Sex ,
Age ,
DepartmentID ,
ClassID ,
StudentName ,
CASE
WHEN ClassID=1 THEN 'CLASS1'
WHEN ClassID=2 THEN 'CLASS3'
WHEN ClassID=3 THEN 'CLASS3'
WHEN ClassID=4 THEN 'CLASS4'
WHEN ClassID=5 THEN 'CLASS5'
WHEN ClassID=6 THEN 'CLASS6' ELSE 'TNE_END'
END AS CLASS
FROM T_Student ;
结果如下:

(2):按照ID的范围:
SELECT Sex ,
DepartmentID ,
ClassID ,
StudentName ,
ID ,
CASE
WHEN ID>=1 AND ID <=6 THEN 'CLASS1'【不限于只进行相等性的比较】
WHEN ID>=2 AND ID <=13 THEN 'CLASS2'
WHEN ID>=14 AND ID <=19 THEN 'CLASS3'
WHEN ID>20 AND ID <=25 THEN 'CLASS4'
WHEN ID>=21 AND ID <=32 THEN 'CLASS5'
WHEN ID>=33 AND ID <= 38 THEN 'CLASS6'
ELSE 'CLASS7'
END AS CLASS
FROM T_Student ;
结果如下:
3.CASE用在其它地方:
(1)函数中:
SELECT
StudentName ,
ID ,
SUM( CASE WHEN SEX = '' THEN
ID ELSE 0 END ), SUM( CASE WHEN Sex = '' THEN
ID ELSE 0 END )
FROM T_Student
GROUP BY ID ,
StudentName ;
(2):CASE用在where中:
SELECT
*
FROM EMP M
WHERE (CASE WHEN M.SAL>1000 AND 1=1 THEN 1
WHEN M.SAL<1000 AND 1=2 THEN 1
WHEN M.SAL>3000 AND 1=3 THEN 1
ELSE 0
END)=1

这些只是在学习中老师没有将之前让我们自己先掌握的,自己就只是简单的做了一些预习吧,里面还是有很多不太符合逻辑的语法,希望指正~~
SQL Server case表达式的用法的更多相关文章
- sql server Case when 的用法
sql Case 仅仅返回第一个符合条件的值,剩下的Case部分将会被自动忽略. Case 的使用有两种格式:简单Case函数和Case搜索函数. 简单Case 函数: Case sex when ' ...
- SQL进阶1:case表达式的用法示例
一:case表达式的用法 1.SQL中的case表达式的作用是用来对"某个变量"进行某种转化,通常在select字句中使用,举个例子: 不能看出,case表达式很像我们的if el ...
- SQL SERVER 中 GO 的用法2
具体不废话了,请看下文详解. 1 2 3 4 5 6 7 8 9 10 use db_CSharp go select *, 备注=case when Grade>=90 then '成绩 ...
- SQL的CASE表达式用法
case 表达式从SQL-92标准开始引入,因此是不依赖于具体的数据库技术,可提高SQL代码的可移植性. case表达式注意事项: 1. 统一各个分支返回数据类型,并保证各个when字句的排他性,因为 ...
- sql server 公共表达式的简单应用(cte)
一.前言 现在做项目数据访问基本都会选择一种orm框架,它以面向对象的形式屏蔽底层的数据访问形式,让开发人员更集中在业务处理上,而不是和数据库的交互上,帮助我们提高开发效率:例如一些简单的insert ...
- sql server cross/outer apply 用法
这是 sql server 帮助文档关于apply的描述: 使用 APPLY 运算符(2005或以上版本)可以为实现查询操作的外部表表达式返回的每个行调用表值函数.表值函数作为右输入,外部表表达式作为 ...
- 【转】SQL SERVER标量表达式的隐式转换
在SQL Server中的数据类型中,存在着优先级的问题.标量表达示的返回结果类型也会根据操作数的类型而定,如1 +'1'=2.而不是'11',因些Int型的优先级比VARCHAR型的优先级要高.所以 ...
- 【SQL】SQL中Case When的用法
Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex ' THEN '男' ' THEN '女' ELSE '其他' END --Case搜索函数 ' T ...
- Sql Server 公用表达式(CTE)
简介 对于select查询语句来说,通常情况下,为了使T-SQL代码更加简洁和可续,在一个查询中引入另外的结果集都是通过视图而不是子查询来进行分解的,但是,视图是作为系统对象存在数据库中,那对于结果集 ...
随机推荐
- 【CISP笔记】操作系统安全
账号安全设置 默认管理账号Administrator更名,设置密码(字母.数字.大小写字母.特殊字符,长度在8位以上). 本地安全策略 打开方式 win+R 输入ecpol.msc 账号锁定策略 用户 ...
- 详细介绍如何在win7下首次实现通过Git bash向Github提交项目
详细介绍如何在win7下首次实现通过Git bash向Github提交项目 引自:http://jingpin.jikexueyuan.com/article/35944.html 作者: wddoe ...
- 1_mysql +DBA职业发展
MYSQL + DBA 职业发展 mysql :the world's most popular open source database 最流行的开源数据库 数据库世界 关系数据库(又称SQL数据库 ...
- 【PHP面向对象(OOP)编程入门教程】19.抽象方法和抽象类(abstract)
在OOP语言中,一个类可以有一个或多个子类,而每个类都有至少一个公有方法做为外部代码访问其的接口.而抽象方法就是为了方便继承而引入的,我们先来看一下抽象类和抽象方法的定义再说明它的用途. 什么是抽象方 ...
- Mac os壁纸提取
想必用过Mac os系统的朋友都知道mac壁纸,提取出来用作壁纸是十分好看的 下面给出壁纸的位置,自己用文件管理器打开然后复制出来即可! 系统盘:/Library/DesktopPictures
- ASP.NET后台输出js大全,页面顶部、form表单中前面与后面、和UpdatePanel(ScriptManager、AJAX)输出JS
Response.Write 与 Page.ClientScript.RegisterStartupScript 与 Page.ClientScript.RegisterClientScriptB ...
- webpack 教程 那些事儿04-webpack项目实战分析
这节主要讲解真正项目用用到的 webpack配置问题,项目实战篇 就像我们不会完全做一个项目,不用别人的轮子一样.这个配置我们借用 vue-cli 搭建的配置来研究,因为它已经足够优秀. 有了前面的基 ...
- [BZOJ1691][Usaco2007 Dec]挑剔的美食家
[BZOJ1691][Usaco2007 Dec]挑剔的美食家 试题描述 与很多奶牛一样,Farmer John那群养尊处优的奶牛们对食物越来越挑剔,随便拿堆草就能打发她们午饭的日子自然是一去不返了. ...
- 机器学习中的Bias(偏差),Error(误差),和Variance(方差)有什么区别和联系?
前几天搜狗的一道笔试题,大意是在随机森林上增加一棵树,variance和bias如何变化呢? 参考知乎上的讨论:https://www.zhihu.com/question/27068705 另外可参 ...
- 29 GroupSock(NetAddressList)——live555源码阅读(四)网络
29 GroupSock(NetAddressList)——live555源码阅读(四)网络 29 GroupSock(NetAddressList)——live555源码阅读(四)网络 简介 Net ...