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代码更加简洁和可续,在一个查询中引入另外的结果集都是通过视图而不是子查询来进行分解的,但是,视图是作为系统对象存在数据库中,那对于结果集 ...
随机推荐
- [译]在AngularJS中何时应该使用Directives,Controllers或者Service
原文: http://kirkbushell.me/when-to-use-directives-controllers-or-services-in-angular/ Services Servic ...
- python的re正则表达式模块学习
python中re模块的用法 Python 的 re 模块(Regular Expression 正则表达式)提供各种正则表达式的匹配操作,在文本解析.复杂字符串分析和信息提取时是一个非常有用的工 ...
- js改变HTML元素的值
js改变HTML元素的值(常用,备忘) <!DOCTYPE html> <html> <body> <h1>我的第一段 JavaScript</h ...
- 随鼠标移动tab
<script language="javascript"> function tabChange(obj, id) { var ...
- 解决Ckeditor编辑器不显示html实体,自动过滤html的问题
Ckeditor 4.5.4,在编辑的时候,使用源码编辑,当保存内容包含Javascript.Style标签的时候,数据库中有Javascript.Style标签,输入到页面也可以执行,但是我再次编辑 ...
- debian8 配置使用 nfs
操作过的步骤: 1.dpkg-reconfigre rpcbind. 2.在终端上退出要挂载的目录. 错误:mount -t nfs 172.16.0.121:/home/junda /mnt,出现以 ...
- bootstrap-collapse
colapse插件:折叠功能 插件:collapse.js 实现方法:以data-toggle做被点击者,以div class="collapse in"显示展开内容 <sc ...
- Javascript高级程序设计——垃圾收集
javascipt具有自动垃圾回收机制 局部变量只在函数执行过程中存在,在这个过程中,会为局部变量在栈上(或堆)内存分配相应空间,来储存他们的值,当函数执行完,局部变量就没有存在的必要了,所以这个时候 ...
- 联不上网 Unable to initialize Windows Sockets interface. General failure.
电脑莫名联不上网 Unable to initialize Windows Sockets interface. General failure. Unable to initialize the W ...
- iOS 开发 初级:应用内购买 In-App Purchase
http://blog.csdn.net/songrotek/article/details/8680415 现在有很多应用都使用了In-App Purchase,虽然对于很多用户来说,可能并不喜欢甚 ...