Sql 基于列的Case表达式
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表达式的更多相关文章
- SQL进阶1:case表达式的用法示例
一:case表达式的用法 1.SQL中的case表达式的作用是用来对"某个变量"进行某种转化,通常在select字句中使用,举个例子: 不能看出,case表达式很像我们的if el ...
- T_SQL基于列的逻辑表达式(case)
本文摘自:http://www.cnblogs.com/kissdodog/p/3154371.html(感谢作者的分享,总结的很好) 基于列的逻辑表达式,其实就是CASE表达式.可以用在SELECT ...
- T-SQL 基于列的逻辑表达式 (CASE)
CASE简介 基于列的逻辑表达式,其实就是CASE表达式.可以用在SELECT,UPDATE,DELETE,SET以及IN,WHERE,ORDER BY和HAVING子句之后.由于这里讲的是T-SQL ...
- 使用CASE表达式替代SQL Server中的动态SQL
原文:使用CASE表达式替代SQL Server中的动态SQL 翻译自: http://www.mssqltips.com/sqlservertip/1455/using-the-case-expre ...
- [SQL] SQL 基础知识梳理(六)- 函数、谓词、CASE 表达式
SQL 基础知识梳理(六)- 函数.谓词.CASE 表达式 目录 函数 谓词 CASE 表达式 一.函数 1.函数:输入某一值得到相应输出结果的功能,输入值称为“参数”,输出值称为“返回值”. 2. ...
- SQL基础学习_05_函数、谓词、CASE表达式
函数 算术函数 1. 四则运算: +.-.*./ 2. ABS:求绝对值, ABS(数值) 3. MOD: 求余,MOD(被除数,除数) 4. ROUND:四舍五入,ROUND(对象数值,保留小数的 ...
- SQL的CASE表达式用法
case 表达式从SQL-92标准开始引入,因此是不依赖于具体的数据库技术,可提高SQL代码的可移植性. case表达式注意事项: 1. 统一各个分支返回数据类型,并保证各个when字句的排他性,因为 ...
- 6 SQL 函数、谓词、CASE表达式
6 函数.谓词.CASE表达式 6-1 各种各样的函数 /* 所谓函数,就是输入某一值得到相应输出结果的功能.输入值称为参数(parameter),输出值称为返回值. 函数大致可以分为以下几种 : 算 ...
- 神奇的 SQL 之 CASE表达式,妙用多多 !
前言 历史考试选择题:黄花岗起义第一枪谁开的? A宋教仁 B孙中山 C黄兴 D徐锡麟,考生选C. 又看第二题:黄花岗起义第二枪谁开的? 考生傻了,就选了个B. 接着看第三题:黄花岗起义中,第三枪谁开的 ...
随机推荐
- Android实例-解决虚拟键盘遮挡问题(XE8+小米2)
结果: 1.可以自动向上移动,来防遮挡,但同时发现个问题,如果是按硬件返回没有问题,要是点输入法(QQ.百度输入法)上的隐藏就不行了. 2.点击Edit2后出现输入法,点输入法上的隐藏后, 再点Edi ...
- 在线性级别时间内找出无序序列中的第k个元素
在一个无序序列中找出第k个元素,对于k很小或者很大时可以采取特殊的方法,比如用堆排序来实现 .但是对于与序列长度N成正比的k来说,就不是一件容易的事了,可能最容易想到的就是先将无序序列排序再遍历即可找 ...
- win32进阶之路:给锁屏软件增加一个超链接按钮
前言: windows下一切皆窗口,我们看到的超链接也是窗口,效果图如下: 鼠标放在赵大哥博客园主页和关于软件两个按钮上,按钮上的字体会从绿色变成红色,同时鼠标指针变为手型,点下鼠标左键就会调用默认浏 ...
- 升级到tomcat7.0碰到的问题
今天把tomcat从6.0.18升级到7.0.25,发现了两个问题 问题1 java.lang.ClassNotFoundException: org.apache.catalina.mbeans.S ...
- Jfinal极速开发微信系列教程(一)--------------Jfinal_weixin demo的使用分析
概述: Jfinal_weixin已经出了有好一段时间了!一直在关注当中......最近工作上有需要到这个东西,所以,话了两个小时来看看这个东西,看完demo以后,豁然开朗,原理微信和一般的web项目 ...
- MVC4网站发布到windows server 2003服务器
在windows server 2003上部署MVC4的网站,需要进行以下工作 用VS2013新建项目 在创建项目的时候选择的矿建为.NET Framework4,然后选择[ASP.NET MVC4 ...
- unity3D中协程和线程混合
这是我google unity3D一个问题偶然发现的在stackflow上非常有趣的帖子: 大意是 要在unity3D上从server下载一个zip,并解压到持久化地址.并将其载入到内存中.以下展示了 ...
- 期望-pku-oj-1055:Tree
题目链接: http://poj.openjudge.cn/practice/1055/ 题目意思: 给出的树最大节点个数为n的情况下,求树上点深度的期望. 解题思路: 数学期望公式的推导. 自己先画 ...
- javascript中false值及其常见比较运算
1. ture或者false的值 if判断中会被隐式转换成false的boolean类型的值有 false, 0, undefined , null , '', NaN(not a number) 除 ...
- android115 自定义控件
布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:to ...