SqlServer2008实例48条件处理

本文详细介绍了SQL Server 2008中如何进行条件处理,包括使用CASE函数根据表达式返回结果,CASE的两种语法形式以及IF...ELSE结构的应用。CASE函数允许根据表达式的值或布尔表达式来计算结果,而IF...ELSE则用于根据布尔表达式执行不同的T-SQL语句或批处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    条件处理可以根据一个或者一组表达式的值来返同结果。
   CASE函数用于根据一个表达式的值返回结果。它常用于将代码转换为描述性的值或者计算多个条件来返回一个值(例如,“如果行是2008年的并且小于或等于当前的季度,则返回销售总数”)。
    IF…ELSE结构计算一个布尔表达式,如果足TRUE则执行一个T-SQL语句或批处理。这个命令有很多用途,使用它可以根据条件返回结果集、更新数据或根据一个或多个搜索条件执行存储过程。

1.使用CASE来计算单个输入表达式

    CASE函数用于根据一个表达式的值返回结果。语法:

CASE input_expression   
     WHEN when_expression THEN result_expression [ ...n ]   
     [ ELSE else_result_expression ]   
END   
参数描述
input_expressioninput_expression 是任何有效的表达式 。
when_expression要与 input_expression 进行比较的简单表达式 。 when_expression 是任何有效的表达式 。 input_expression 及每个 when_expression 的数据类型必须相同或必须是隐式转换的数据类型 。
result_expression当 input_expression = when_expression 的计算结果为 TRUE 时,或 Boolean_expression 的计算结果为 TRUE 时返回的表达式 。

 示例:

USE AdventureWorks
GO

--根据部门决定会议室
SELECT DepartmentID,
       Name,
       GroupName,
	   CASE GroupName
		WHEN 'Research and Development' THEN 'Room A'
		WHEN 'Sales and Marketing' THEN 'Room B'
		WHEN 'Manufacturing' THEN 'Room C'
		ELSE 'Room D'
	   END ConferenceRoom
FROM HumanResources.Department

2.使用CASE来计算布尔表达式

    CASE提供了另外一种语法,它不使用初始的输入表达式,而是使用一个或多个布尔表达式,当表达式计算为TRUE的时候返回一个结果表达式。语法如下:

CASE  
     WHEN when_expression THEN result_expression [ ...n ]   
     [ ELSE else_result_expression ]   
END  

    和前面的技巧相比,语法中另外的参数是要计算的表达式bo01ean_expression。每一个WHEN都计算一个布尔表达式而不是输入表达式,如果TRUE则返回结果表达式。这种形式的CASE允许额外的表达式,而不是仅仅计算一个输入表达式的值。
    如果没有表达式计算为TRUE,则返回ELSE子句的resuit_expression,或者如果没有指定ELSE子句的话就返回NULL值。如果一行与多个布尔表达式匹配,那么第一个计算为TRUE的布尔表达式决定了结果表达式。

    示例:

USE AdventureWorks
GO

SELECT DepartmentID,
       Name,
       CASE
			WHEN Name='Research and DEvelopment' THEN 'Room A'
			WHEN (Name='Sales and Marketing' OR DepartmentID=10) THEN 'Room B'
			WHEN Name LIKE 'T%' THEN 'Room C'
			ELSE 'Room D'
       END ConferenceRoom
FROM HumanResources.Department
ORDER BY ConferenceRoom

3.使用IF…ELSE

 IF…ELSE计算一个布尔表达式,如果是TRUE则执行一个T-SQL语句或批处理。

IF Boolean_expression   
     { sql_statement | statement_block }   
[ ELSE   
     { sql_statement | statement_block } ]

  如果布尔表达式计算为FALSE,则调用ELSE子句,执行ELSE后的T-SQL语句或批处理。
  示例:

USE AdventureWorks
GO

DECLARE @QuerySelector int
SET @QuerySelector=3

IF @QuerySelector=1
BEGIN 
	SELECT TOP 3
		ProductID,Name,Color
	FROM Production.Product
	WHERE Color='Silver'
	ORDER BY Name
END
ELSE
BEGIN 
	SELECT TOP 3
		ProductID,Name,Color
	FROM Production.Product
	WHERE Color='Black'		
	ORDER BY Name
END

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ngbshzhn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值