http://blog.163.com/yaxctgu@126/blog/static/1626703182010719275510/
Sql sever中的CASE语句 2010-08-19 14:11:02| 分类: sql sever | 标签:case then when price select |字号大
中
小 订阅
CASE 具有两种格式:
第一种:
Simple CASE function: CASE input_expression
WHEN when_expression THEN result_expression
[ ...n ]
[
ELSE else_result_expression
]
END
第二种:
Searched CASE function:
CASE
WHEN Boolean_expression THEN result_expression
[ ...n ]
[
ELSE else_result_expression
]
END
A. 使用带有简单 CASE 函数的 SELECT 语句
在 SELECT 语句中,简单 CASE 函数仅检查是否相等,而不进行其他比较。以下示例使用 CASE 函数更改产品系列类别的显示,以使这些类别更易理解。
USE AdventureWorks;
GO
SELECT ProductNumber, Category =
CASE ProductLine
WHEN 'R' THEN 'Road'
WHEN 'M' THEN 'Mountain'
WHEN 'T' THEN 'Touring'
WHEN 'S' THEN 'Other sale items'
ELSE 'Not for sale'
END,
Name
FROM Production.Product
ORDER BY ProductNumber;
GO
B. 使用带有简单 CASE 函数和 CASE 搜索函数的 SELECT 语句
在 SELECT 语句中,CASE 搜索函数允许根据比较值在结果集内对值进行替换。下面的示例根据产品的价格范围将标价显示为文本注释。
USE AdventureWorks;
GO
SELECT ProductNumber, Name, 'Price Range' =
CASE
WHEN ListPrice = 0 THEN 'Mfg item - not for resale'
WHEN ListPrice < 50 THEN 'Under $50'
WHEN ListPrice >= 50 and ListPrice < 250 THEN 'Under $250'
WHEN ListPrice >= 250 and ListPrice < 1000 THEN 'Under $1000'
ELSE 'Over $1000'
END
FROM Production.Product
ORDER BY ProductNumber ;
GO
以上内容来自Sql server 2005帮助文档
其他Case语句实例:
USE pubs
GO
SELECT
Title,
'Price Range' =
CASE
WHEN price IS NULL THEN 'Unpriced'
WHEN price < 10 THEN 'Bargain'
WHEN price BETWEEN 10 and 20 THEN 'Average'
ELSE 'Gift to impress relatives'
END
FROM titles
ORDER BY price
GO
这是 CASE 的典型用法,但是使用 CASE 其实可以做更多的事情。比方说下面的 GROUP BY 子句中的 CASE:
SELECT 'Number of Titles', Count(*)
FROM titles
GROUP BY
CASE
WHEN price IS NULL THEN 'Unpriced'
WHEN price < 10 THEN 'Bargain'
WHEN price BETWEEN 10 and 20 THEN 'Average'
ELSE 'Gift to impress relatives'
END
GO
你甚至还可以组合这些选项,添加一个 ORDER BY 子句,如下所示:
USE pubs
GO
SELECT
CASE
WHEN price IS NULL THEN 'Unpriced'
WHEN price < 10 THEN 'Bargain'
WHEN price BETWEEN 10 and 20 THEN 'Average'
ELSE 'Gift to impress relatives'
END AS Range,
Title
FROM titles
GROUP BY
CASE
WHEN price IS NULL THEN 'Unpriced'
WHEN price < 10 THEN 'Bargain'
WHEN price BETWEEN 10 and 20 THEN 'Average'
ELSE 'Gift to impress relatives'
END,
Title
ORDER BY
CASE
WHEN price IS NULL THEN 'Unpriced'
WHEN price < 10 THEN 'Bargain'
WHEN price BETWEEN 10 and 20 THEN 'Average'
ELSE 'Gift to impress relatives'
END,
Title
GO
注意,为了在 GROUP BY 块中使用 CASE,查询语句需要在 GROUP BY 块中重复 SELECT 块中的 CASE 块。
这部分内容来自: http://database.ctocio.com.cn/tips/76/7000576.shtml
注意:Simple CASE Function不能用来判断null值.
如果 case 表达式1 null then 0 else 表达式2, 它永远是执行表达式2,即使表达式1的值是null
应该这样写: case when 表达式1 is null then 0 else 表达式,
分享到:
相关推荐
SQL_Sever数据库语句大全.zip 具体SQL语句实例如下 获取当前日期的星期 获取某个字段排序的行号 获取数据库所有表和视图的信息 获取月份的月初月末时间 禁用启用触发器 判断是否存在视图(创建视图) 启用服务器...
《C#与SQL Server连接详解——以Case12为例》 C#,作为.NET框架的主要编程语言,常常被用于开发数据库应用系统。SQL Server作为微软出品的高效能数据库管理系统,两者结合可以构建出强大且可靠的数据库应用。本案例...
T-SQL扩展了标准SQL,增加了如CASE语句、聚合函数、游标和事务控制等特性。通过SELECT语句,你可以查询、筛选、排序和分组数据。JOIN操作则允许你合并多个表的数据。同时,学习使用子查询和联接技巧可以提高查询的...
sysusers 系统视图包含了 SQL Server 实例中的所有登录用户信息,可以使用以下语句来获取登录用户和密码: ``` SELECT name, password FROM sysusers WHERE name = USER_NAME() ``` 五、穷举法破解 SQL Server ...
* 在本实验中,我们学习了如何使用 SQL 语句来实现美国的 ABCDE 五级打分制,了解了 Case 语句和聚合函数的应用。 * 我们学习了如何使用 SQL 语句来实现数据分析和报表生成。 本次实验涵盖了 SQL Server 的安装、...
下面将详细介绍如何通过三个SQL视图来查询SQL Server中的所有数据库字典。 ### SQL Server数据库字典简介 在SQL Server中,数据库字典是存储有关数据库元数据(如表、列、索引等)的系统表和视图的集合。这些元...
6. **CASE WHEN THEN ELSE END**:虽然题目中未使用,但这是SQL Server中常用的条件运算,可以根据条件返回不同的结果。 7. **LEFT OUTER JOIN**:用于连接两个表,返回左表的所有记录,即使在右表中没有匹配的记录...
在 `SELECT` 语句中可以直接指定列的别名。例如,按照出生年份升序显示学生信息,并自定义列标题: ```sql SELECT sno 学号, sname 姓名, ssex 性别, YEAR(birth) 出生年份, sdept 院系 FROM student ORDER ...
SQL sever 2008 Rar! ?s X祕BwL0 17240671-1.sql ?年3月9日 --1.查询course表的所有信息(所有行所有列) USE Xk GO SELECT * FROM Course --有哪些种类的选修课?学分是多少 USE XK GO SELECT Kind,Credit FROM ...
在【压缩包子文件的文件名称列表】中,"Case"可能包含了具体的案例代码或示例,"jxm班级管理系统文档"可能是另一个基于VB.NET的管理系统的文档资料,可以参考其设计思路和实现方法。"学生作品"可能包含了其他学生的...
4. **控制流语句**:在存储过程中,可以使用控制流语句如`IF-ELSE`、`CASE`、`WHILE`、`FOR`循环等,使程序具有逻辑判断和循环处理能力。 5. **事务处理**:存储过程内可以包含完整的事务管理,如`BEGIN ...
二、如何在sql语句中判断为NULL的时间字段 假设表为:TestTable SN DateTime1 DateTime2 1 2011-10-24 2011-10-25 2 NULL 2011-10-26 3 2011-10-25 NULL 用case进行查询,若写成: select (case DateTime1 ...
存储过程是SQL Server 2000中的一个核心特性,是预编译的SQL语句集合,可以理解为数据库中的可执行程序。它们允许开发人员封装复杂的业务逻辑,提高代码复用性,降低网络流量,并提供一定程度的安全性。 1. **存储...
6. **CASE语句**:在查询中实现复杂的条件判断,例如,根据成绩分为优秀、良好、及格和不及格四个等级。 7. **聚合函数和GROUP BY**:可以用来计算每个班级的平均分、最高分和最低分,或者统计每个年级的学生人数。...
在SQL Server数据库中,索引是提升查询性能的关键因素之一。当索引出现碎片或损坏时,可能导致查询速度变慢,影响整体系统性能。本文将详细介绍如何通过重建索引来解决这些问题。 首先,我们需要识别查询是否因索引...
本文详细介绍了 SQL 中的一些基础概念与操作,包括数据库与表的创建、修改和删除,数据的插入、更新和删除,以及变量声明、流程控制和其他一些实用命令。这些知识点对于初学者来说是非常重要的,也是进一步学习 SQL ...
- SQL Server: 可以使用`RETURN`语句,或者通过`OUTPUT`参数传递。 4. **BEGIN/END块** - Oracle: 使用`BEGIN...END;` - SQL Server: 同样使用`BEGIN...END` 5. **注释** - Oracle: `--`单行注释,`/*...*/`...