CASE (Transact-SQL)

原创 2006年05月17日 15:04:00

计算条件列表并返回多个可能结果表达式之一。

CASE 具有两种格式:  

  • 简单 CASE 函数将某个表达式与一组简单表达式进行比较以确定结果。
  • CASE 搜索函数计算一组布尔表达式以确定结果。
  • 两种格式都支持可选的 ELSE 参数。

语法

 
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

参数

input_expression

使用简单 CASE 格式时所计算的表达式。input_expression 是任意有效的表达式。

WHEN when_expression

使用简单 CASE 格式时要与 input_expression 进行比较的简单表达式。when_expression 是任意有效的表达式。input_expression 及每个 when_expression 的数据类型必须相同或必须是隐式转换的数据类型。

n

占位符,表明可以使用多个 WHEN when_expression THEN result_expression 子句或多个 WHEN Boolean_expression THEN result_expression 子句。

THEN result_expression

当 input_expression = when_expression 计算结果为 TRUE,或者 Boolean_expression 计算结果为 TRUE 时返回的表达式。result expression 是任意有效的表达式。

ELSE else_result_expression

比较运算计算结果不为 TRUE 时返回的表达式。如果忽略此参数且比较运算计算结果不为 TRUE,则 CASE 返回 NULL。else_result_expression 是任意有效的表达式。else_result_expression 及任何 result_expression 的数据类型必须相同或必须是隐式转换的数据类型。

WHEN Boolean_expression

使用 CASE 搜索格式时所计算的布尔表达式。Boolean_expression 是任意有效的布尔表达式。

结果类型

从 result_expressions 和可选 else_result_expression 的类型集中返回优先级最高的类型。

结果值

简单 CASE 函数:

  • 计算 input_expression,然后按指定顺序对每个 WHEN 子句的 input_expression = when_expression 进行计算。

  • 返回 input_expression = when_expression 的第一个计算结果为 TRUE 的 result_expression。

  • 如果 input_expression = when_expression 计算结果不为 TRUE,则在指定 ELSE 子句的情况下 SQL Server 2005 Database Engine 将返回 else_result_expression;若没有指定 ELSE 子句,则返回 NULL 值。

CASE 搜索函数:

  • 按指定顺序对每个 WHEN 子句的 Boolean_expression 进行计算。

  • 返回 Boolean_expression 的第一个计算结果为 TRUE 的 result_expression。

  • 如果 Boolean_expression 计算结果不为 TRUE,则在指定 ELSE 子句的情况下 数据库引擎 将返回 else_result_expression;若没有指定 ELSE 子句,则返回 NULL 值。

示例

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 联机丛书

Transact SQL 语句以及函数--很全

Transact SQL  语 句 功 能  --数据操作     SELECT --从数据库表中检索数据行和列        INSERT --向数据库表添加新数据行        DELE...
  • leamonjxl
  • leamonjxl
  • 2011年03月10日 10:57
  • 3025

教程:编写 Transact-SQL 语句

第 1 课:创建数据库对象 本课将介绍如何创建数据库,在数据库中创建表,然后访问表中的数据并对其进行更改。由于本课是对使用 Transact-SQL 的简介,因此它未使用或说明为这些...
  • xinqingwuji
  • xinqingwuji
  • 2016年05月12日 11:23
  • 8625

Transact-SQL statement or batch.

http://blog.sina.com.cn/s/blog_6e8c9a130100q84k.html 附加数据库时报错 错误信息如下 An excepti...
  • ccycyy
  • ccycyy
  • 2012年05月27日 07:07
  • 3418

Transact_SQL小手册

--语 句                                功 能--数据操作 SELECT      --从数据库表中检索数据行和列 INSERT      --向数据库表添加新数据行...
  • wxinw
  • wxinw
  • 2006年09月24日 21:55
  • 510

我的Transact_SQL小手册

--语 句 功 能 --数据操作 SELECT --从数据库表中检索数据行和列 INSERT --向数据库表添加新数据行 DELETE --从数据库表中删除数据行 UPDATE --更新数据库表中的数...
  • daoquan
  • daoquan
  • 2005年05月28日 01:14
  • 684

推荐一本书Transact-SQL权威指南

Transact-SQL权威指南学习基本sql的经典图书
  • longronglin
  • longronglin
  • 2010年11月07日 21:53
  • 1021

SQL SERVER 2008 无法启动T-SQL调试的解决方法(亲自实践)

将 Windows 登录帐户添加为 sysadmin 已经具有 sysadmin 特权的用户必须执行以下命令: sp_addsrvrolemember 'Domain\Name', ...
  • bigheadsheep
  • bigheadsheep
  • 2012年07月26日 14:14
  • 11976

配置 Transact-SQL 调试器

您必须配置 Windows 防火墙例外,以在连接到数据库引擎实例(运行该实例的计算机不同于运行数据库引擎查询编辑器的计算机)时启用 Transact-SQL 调试。 配置 Transact-...
  • u011127019
  • u011127019
  • 2015年05月16日 16:59
  • 513

sql server 2005 T-SQL CASE (Transact-SQL)

计算条件列表并返回多个可能结果表达式之一。CASE 具有两种格式: 简单 CASE 函数将某个表达式与一组简单表达式进行比较以确定结果。 CASE 搜索函数计算一组布尔表达式以确定结...
  • czh_liyu
  • czh_liyu
  • 2007年12月21日 10:40
  • 5304

简述什么是T-SQL

目录 目录 简述什么是T-SQL 参考资料 简述什么是T-SQL在SQL Server的相关资料中,我们常看到T-SQL,那么什么是T-SQL?其实T-SQL,就是Transact-SQL,是SQL ...
  • wstoneh01
  • wstoneh01
  • 2016年03月28日 20:05
  • 507
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:CASE (Transact-SQL)
举报原因:
原因补充:

(最多只允许输入30个字)