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表达式

Sql 基于列的Case表达式的更多相关文章

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

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

  2. T_SQL基于列的逻辑表达式(case)

    本文摘自:http://www.cnblogs.com/kissdodog/p/3154371.html(感谢作者的分享,总结的很好) 基于列的逻辑表达式,其实就是CASE表达式.可以用在SELECT ...

  3. T-SQL 基于列的逻辑表达式 (CASE)

    CASE简介 基于列的逻辑表达式,其实就是CASE表达式.可以用在SELECT,UPDATE,DELETE,SET以及IN,WHERE,ORDER BY和HAVING子句之后.由于这里讲的是T-SQL ...

  4. 使用CASE表达式替代SQL Server中的动态SQL

    原文:使用CASE表达式替代SQL Server中的动态SQL 翻译自: http://www.mssqltips.com/sqlservertip/1455/using-the-case-expre ...

  5. [SQL] SQL 基础知识梳理(六)- 函数、谓词、CASE 表达式

    SQL 基础知识梳理(六)-  函数.谓词.CASE 表达式 目录 函数 谓词 CASE 表达式 一.函数 1.函数:输入某一值得到相应输出结果的功能,输入值称为“参数”,输出值称为“返回值”. 2. ...

  6. SQL基础学习_05_函数、谓词、CASE表达式

    函数 算术函数 1. 四则运算: +.-.*./  2. ABS:求绝对值, ABS(数值) 3. MOD: 求余,MOD(被除数,除数) 4. ROUND:四舍五入,ROUND(对象数值,保留小数的 ...

  7. SQL的CASE表达式用法

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

  8. 6 SQL 函数、谓词、CASE表达式

    6 函数.谓词.CASE表达式 6-1 各种各样的函数 /* 所谓函数,就是输入某一值得到相应输出结果的功能.输入值称为参数(parameter),输出值称为返回值. 函数大致可以分为以下几种 : 算 ...

  9. 神奇的 SQL 之 CASE表达式,妙用多多 !

    前言 历史考试选择题:黄花岗起义第一枪谁开的? A宋教仁 B孙中山 C黄兴 D徐锡麟,考生选C. 又看第二题:黄花岗起义第二枪谁开的? 考生傻了,就选了个B. 接着看第三题:黄花岗起义中,第三枪谁开的 ...

随机推荐

  1. IP查找工具——angry IP Scanner

    作用] 若树莓派没有屏幕可通过该工具查找树莓派的IP地址.例如下图的树莓派IP地址可能为192.168.1.107. 图1 IP scan查找树莓派IP地址

  2. HDU2686-Matrix & HDU3376-Matrix Again(费用流)

    比较简单的题了. 只需从左上角到右下角找两条路就可以了. 因为每个点只能走一次,所以拆点,限制流量为1. 因为求的是最大值,所以权值取反求最小值. 因为第一个点和最后一个点经过两次,只算一次,最后要减 ...

  3. 关于JavaScripting API您不知道的5件事

    现在,许多 Java 开发人员都喜欢在 Java 平台中使用脚本语言,但是使用编译到 Java 字节码中的动态语言有时是不可行的.在某些情况中,直接编写一个 Java 应用程序的脚本 部分 或者在一个 ...

  4. 八成Java开发者解答不了的问题

    统计数据来自Java“死亡”竞赛——一个针对开发者的迷你测验 几个月前,我们在一个小型网站上发布了一个称为Java“死亡竞赛”的新项目.测验发布后,超过20000位开发者参加了测验.网站以20道关于J ...

  5. 解决各大浏览器兼容问题hack

    解决各大浏览器兼容问题hack,IE6/ IE7/ IE8/ IE9/ Firefox/ Opera/ Webkit/ Chrome/ Safari. 浏览器兼容是网站前端页面制作最基本的问题,通常I ...

  6. elecworks 电缆型号管理器

    部件的命名:系列  导线数x尺寸                                            (不含保护类型的电线) 或:系列  导线数G尺寸      G(指保护线颜色gr ...

  7. sizeof _countof _tcslen的比较

    sizeof ----用于计算数组或其他对象的大小,以字节为单位,含\0结束符. _countof----一个宏,用于计算数组的实际元素个数 ,含\0结束符: _tcslen----c++求数组长度的 ...

  8. Winodws安装系统时,通过安装磁盘进行分区

    今天使用一个系统盘安装的时候,很奇怪,分区总是分出来一个系统磁盘,一个MBR,剩下的只能分主分区. 这样就导致我在进行windows激活时,激活工具都找不到启动磁盘的盘符(因为自动分出来的系统磁盘和M ...

  9. MySQL中UNION和UNION ALL的使用

    在数据库中,UNION和UNION ALL关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同. MySQL中的UNION UNION在进行表链接后会筛选掉重复的记录,所以在表链接后 ...

  10. mysql slow log分析工具的比较

    mysql 中的 slow log 是用来记录执行时间较长(超过 long_query_time 秒)的 sql 的一种日志工具. 启用 slow log 在 my.cnf 中设置 [mysqld] ...