★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. Eclipse中使用tomcat 8服务器初级教程

    Eclipse中使用tomcat容器时,经常遇到的问题是启动不成功,输入localhost:8080报404,本文就是教大家破解这个问题.(不过这是很初级的问题了,大牛勿喷) 步骤 1 Window- ...

  2. KVM虚拟机内存不足,调整参数

    Dec :: vgfs001 kernel: tiotest_AMD_x86 invoked oom-killer: gfp_mask=, oom_adj=, oom_score_adj= Dec : ...

  3. linux配置java环境变量

    linux配置java环境变量(详细) 一. 解压安装jdk 在shell终端下进入jdk-6u14-linux-i586.bin文件所在目录, 执行命令 ./jdk-6u14-linux-i586. ...

  4. QT文件读写

    /* //文件读取 QFile f("c:\\t.txt"); if(!f.open(QIODevice::WriteOnly | QIODevice::Text)) { qDeb ...

  5. SRM 510 2 250TheAlmostLuckyNumbersDivTwo(数位dp)

    SRM 510 2 250TheAlmostLuckyNumbersDivTwo Problem Statement John and Brus believe that the digits 4 a ...

  6. C++中的单例模式(转)

    单例模式也称为单件模式.单子模式,可能是使用最广泛的设计模式.其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享.有很多地方需要这样的功能模块,如系统的日志输出,G ...

  7. Linux资源站

    1.<鸟哥的linux私房菜>中提供的台湾高速网络中心ftp站:http://ftp.twaren.net/Linux/CentOS/5/

  8. CMake Error: your CXX compiler: "" was not found

    [root@amax src]# cmake . -- The CXX compiler identification is unknown CMake Error at /usr/local/sha ...

  9. crontab用法与实例

    导读 在Linux系统的实际使用中,可能会经常碰到让系统在某个特定时间执行某些任务的情况,比如定时采集服务器的状态信息.负载状况:定时执行某些任务/脚本来对远端进行数据采集等.这里将介绍下cronta ...

  10. Android学习笔记(十六)——数据库操作(上)

    //此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! Android 为了让我们能够更加方便地管理数据库,专门提供了一个 SQLiteOpenHelper帮助类, ...