博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL Server case表达式的用法
阅读量:5296 次
发布时间:2019-06-14

本文共 2834 字,大约阅读时间需要 9 分钟。

 

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 CLASSFROM 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 CLASSFROM T_Student ;

结果如下:

3.CASE用在其它地方:

(1)函数中:

SELECT                StudentName ,               ID ,               SUM( CASE WHEN SEX = '1' THEN                       ID ELSE 0 END ),                                      SUM( CASE WHEN Sex = '0' 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

这些只是在学习中老师没有将之前让我们自己先掌握的,自己就只是简单的做了一些预习吧,里面还是有很多不太符合逻辑的语法,希望指正~~

转载于:https://www.cnblogs.com/haixiaomei/p/20150826Sea.html

你可能感兴趣的文章
SecureCRT的使用方法和技巧(详细使用教程)
查看>>
右侧导航栏(动态添加数据到list)
查看>>
81、iOS本地推送与远程推送详解
查看>>
虚拟DOM
查看>>
uva 11468 Substring
查看>>
自建数据源(RSO2)、及数据源增强
查看>>
BootStrap2学习日记2--将固定布局换成响应式布局
查看>>
关于View控件中的Context选择
查看>>
2018icpc徐州OnlineA Hard to prepare
查看>>
Spark的启动进程详解
查看>>
使用命令创建数据库和表
查看>>
数据库的高级查询
查看>>
机器视觉:SSD Single Shot MultiBox Detector
查看>>
五子棋项目的实现(二)博弈树算法的描述
查看>>
201521123044 《Java程序设计》第1周学习总结
查看>>
MIT Scheme 的基本使用
查看>>
程序员的“机械同感”
查看>>
在16aspx.com上下了一个简单商品房销售系统源码,怎么修改它的默认登录名和密码...
查看>>
c++回调函数
查看>>
linux下Rtree的安装
查看>>