★CASE表达式是一个标量表达式,它基于条件逻辑来返回一个值。因为CASE是一个标量表达式,所以它可以应用在SELECT、WHERE、HAVING以及ORDER BY子句中。

CASE表达式有两种格式:简单表达式和搜索表达式。

  1. 利用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表达式的用法的更多相关文章

  1. sql server Case when 的用法

    sql Case 仅仅返回第一个符合条件的值,剩下的Case部分将会被自动忽略. Case 的使用有两种格式:简单Case函数和Case搜索函数. 简单Case 函数: Case sex when ' ...

  2. SQL进阶1:case表达式的用法示例

    一:case表达式的用法 1.SQL中的case表达式的作用是用来对"某个变量"进行某种转化,通常在select字句中使用,举个例子: 不能看出,case表达式很像我们的if el ...

  3. SQL SERVER 中 GO 的用法2

    具体不废话了,请看下文详解. 1 2 3 4 5 6 7 8 9 10 use db_CSharp go  select *,  备注=case  when Grade>=90 then '成绩 ...

  4. SQL的CASE表达式用法

    case 表达式从SQL-92标准开始引入,因此是不依赖于具体的数据库技术,可提高SQL代码的可移植性. case表达式注意事项: 1. 统一各个分支返回数据类型,并保证各个when字句的排他性,因为 ...

  5. sql server 公共表达式的简单应用(cte)

    一.前言 现在做项目数据访问基本都会选择一种orm框架,它以面向对象的形式屏蔽底层的数据访问形式,让开发人员更集中在业务处理上,而不是和数据库的交互上,帮助我们提高开发效率:例如一些简单的insert ...

  6. sql server cross/outer apply 用法

    这是 sql server 帮助文档关于apply的描述: 使用 APPLY 运算符(2005或以上版本)可以为实现查询操作的外部表表达式返回的每个行调用表值函数.表值函数作为右输入,外部表表达式作为 ...

  7. 【转】SQL SERVER标量表达式的隐式转换

    在SQL Server中的数据类型中,存在着优先级的问题.标量表达示的返回结果类型也会根据操作数的类型而定,如1 +'1'=2.而不是'11',因些Int型的优先级比VARCHAR型的优先级要高.所以 ...

  8. 【SQL】SQL中Case When的用法

    Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex ' THEN '男' ' THEN '女' ELSE '其他' END --Case搜索函数 ' T ...

  9. Sql Server 公用表达式(CTE)

    简介 对于select查询语句来说,通常情况下,为了使T-SQL代码更加简洁和可续,在一个查询中引入另外的结果集都是通过视图而不是子查询来进行分解的,但是,视图是作为系统对象存在数据库中,那对于结果集 ...

随机推荐

  1. C#深入浅出 修饰符(二)

    1.函数参数前的修饰符 params ,ref ,out params修饰的数据类型只能数组,用于参数不固定时:且此参数位于所有形式参数的最后: public static int GetMax(pa ...

  2. LR常用函数整理

    1,变量转参数lr_save_string("aaa","param"):将字符串"aaa"或者一个字符串变量,转变成LR的参数{param ...

  3. bootstrap实现弹出窗口

    bootstrap使用modal-dialog实现弹对话框. 一个对话框包含3部分: 对话框头部 modal-header 对话框内容体 modal-body 对话框底部 modal-footer 如 ...

  4. js时间格式化(yy年MM月dd日 hh:mm)

    //时间格式化 Date.prototype.format = function (format) { var o = { "M+": this.getMonth() + 1, / ...

  5. httpd服务访问控制

    客户机地址限制 通过配置Order.Deny from.Allow from 来限制客户机 allow.deny :先"允许"后"拒绝" ,默认拒绝所有为明确的 ...

  6. CSU 1113 Updating a Dictionary(map容器应用)

    题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1113 解题报告:输入两个字符串,第一个是原来的字典,第二个是新字典,字典中的元素的格式为 ...

  7. jQuery源码笔记(一):jQuery的整体结构

    jQuery 是一个非常优秀的 JS 库,与 Prototype,YUI,Mootools 等众多的 Js 类库相比,它剑走偏锋,从 web 开发的实用角度出发,抛除了其它 Lib 中一些中看但不实用 ...

  8. ionic不同view跳转到同一个

    ionic不同view跳转到同一个 view并保留历史的路由设计 上代码:state 里面新加一个状态 .state("other", { url: "/other&qu ...

  9. xcode快捷方式 一 快速找到对应文件

    事情是这样的,当一个项目进行到一定程度的时候,文件就多了.通过storyboard或xib,相对应的文件.m/.h拖线或其他的操作时,找到对应的文件稍显麻烦.今天,一个快捷方式解决了这个困扰. 注:在 ...

  10. 剑指Offer 矩形覆盖

    题目描述 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?   解法,还是斐波那契数列   AC代码: class So ...