SqlServer2008实例48条件处理

    条件处理可以根据一个或者一组表达式的值来返同结果。
   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

 

©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页