Case表达式可以用在 Select,update ,delete ,set,in,where ,order by,having子句之后,

只是case表达式不能控制sql程序的流程,只能作为基于列的逻辑使用

SELECT  TOP  CASE    a.Id
WHEN THEN '骨性关节炎1'
WHEN THEN '骨性关节炎2'
WHEN THEN '骨性关节炎3'
ELSE '不知道'
END AS MyName
FROM [dbo].[Disease] a
ORDER BY a.Id

也可以这样写:

SELECT  TOP   MyName = CASE    a.Id
WHEN THEN '骨性关节炎1'
WHEN THEN '骨性关节炎2'
WHEN THEN '骨性关节炎3'
ELSE '不知道'
END
FROM [dbo].[Disease] a
ORDER BY a.Id

case表达式分两种:
简单表达式:将某个表达式与一组简单表达式进行比较以确定结果
即:整个表达式只会取一列的值做相应的判断,
搜索表达式:计算一组布尔表达式以确定结果

上面的实例就是一个简单表达式

注意:then 后面的数据类型必须相同或者兼容,否则会报错

case搜索表达式:

 SELECT  CASE
WHEN r.[SystemName] = 'Administrators' THEN '管理员'
WHEN r.[SystemName] = 'Registered' THEN 'APP注册用户'
ELSE '不知道'
END AS MyName FROM [dbo].[Role] r

注意顺序:当第一个when后的表达式为true,则取第一个then后面的值,即使第二个when表达式也为true

CASE表达式在ORDER BY中的使用:
case表达式在order by 中可以将排序结果分类,使符合某些条件的行采用一种排序方式,符合另外另一种条件的行采用另一种排序方式

 DECLARE @beforeTime DATETIME
SET @beforeTime = DATEADD(MONTH,-,GETDATE())
SELECT * FROM #result r ORDER BY
CASE WHEN r.CreatedOnUtc >= @beforeTime THEN r.HotCount END DESC ,
CASE WHEN r.CreatedOnUtc < @beforeTime THEN r.CreatedOnUtc END DESC

注意:这里每一条规则都要单独写一个case表达式,因为case表达式是基于列的,一个case表达式只能返回一个值,所以基于多少个值排序,就需要多少个case表达式

最新文章

  1. Java工具Eclipse
  2. js的小效果-图片放大镜效果
  3. 读书笔记_Effective_C++_条款四十二:了解typename的双重意义
  4. JAVA与.NET的相互调用——通过Web服务实现相互调用
  5. 浅谈C51内存优化
  6. Windows下配置PHP
  7. Java中间Map List Set和其他收藏品
  8. java系列--JSON数据的处理
  9. SPOJ - DISUBSTR 多少个不同的子串
  10. parcel和parcelable
  11. Excel 将A表的基础数据拼接到B表中来-三种方法: ctrl+回车, VLOOKUP()函数,宏
  12. 2、Flutter 填坑记录篇
  13. Beta冲刺 (1/7)
  14. LeetCode——13. Roman to Integer
  15. 树莓派学习笔记(5):成功实现NAS家庭服务器(流媒体播放、文件共享及下载机)
  16. Java NIO和IO的区别(转)
  17. Python自动发邮件-yagmail库
  18. [置顶]使用scrapy_redis,自动实时增量更新东方头条网全站新闻
  19. 用python实现各种排序算法
  20. Linux学习1-创建虚拟机

热门文章

  1. BNUOJ-29365 Join in tasks 简单数学
  2. fscanf(格式化字符串输入)
  3. 使用Genymotion调试出现错误INSTALL_FAILED_CPU_ABI_INCOMPATI
  4. Oracle- 备份单表结构和单表数据
  5. Unable to read TLD &quot;META-INF/c.tld&quot;错误
  6. ThinkPHP3.1快速入门(13)自动完成
  7. 关于unity3d播放flash动画,使用插件uniswf
  8. 期望-pku-oj-1055:Tree
  9. 面试题总结之C/C++/MISC
  10. Google实习面试归来