SQL CASE 表达式的简单用法






4.66/5 (41投票s)
本文将让您了解如何在 T-SQL 中使用 CASE 表达式,或将其用作特定列的公式。
目录
引言
本文将让您了解如何在 T-SQL 中使用 CASE 表达式,或将其用作特定列的公式。
什么是 CASE 表达式
CASE 是 SQL 语言中的特殊标量表达式。CASE 表达式被广泛用于促进从用户输入值确定/设置新值。CASE 表达式可用于各种用途,这取决于业务逻辑。
CASE 表达式主要用于 SQL 存储过程或作为特定列的公式,从而优化 SQL 语句。
CASE 表达式的语法
SQL CASE 表达式用作一种 IF-THEN-ELSE 语句。 它类似于最近的编程语言(例如 C# 和 Java)中的 switch 语句。 CASE 语句的语法如下所示
1.    CASE column_name  
2.      WHEN condition1 THEN result1  
3.      WHEN condition2 THEN result2  
4.      ...  
5.      ELSE result  
6.    END
CASE 语句的示例
DECLARE @intInput INT
SET @intInput = 2
SELECT CASE(@intInput) WHEN 1 THEN 'One' WHEN 2 THEN 'Two' _
		WHEN 3 THEN 'Three' ELSE 'Your message.' END 
CASE 表达式的用法
CASE 表达式可以在允许标量表达式的任何地方使用,包括在 select 语句的 WHERE 和 HAVING 子句中。
在本文中,我想展示最常用的 case 表达式
- 存储过程
- 特定列的公式
- 视图
在存储过程中的基本用法
下面给出了在存储过程中使用 CASE 的一个简单示例
-- =============================================
-- Author: Md. Marufuzzaman
-- Create date: 
-- Description:    A simple example of CASE expression.
-- =============================================
/*
DECLARE @varCountry VARCHAR(100)
EXEC spGetCountry 1, @varCountry OUTPUT
SELECT @varCountry
*/
ALTER PROCEDURE [dbo].[spGetCountry]
 @intCode        INT
,@varOutPut         VARCHAR(100) OUTPUT
AS
BEGIN
 
SELECT CASE(@intCode) WHEN 1 THEN 'Country_1'
              WHEN 2 THEN 'Country_2'
              WHEN 3 THEN 'Country_3'
              WHEN 4 THEN 'Country_4'
              WHEN 5 THEN 'Country_5'
              WHEN 6 THEN 'Country_6'
              WHEN 7 THEN 'Country_7'
              WHEN 8 THEN 'Country_8'
              WHEN 9 THEN 'Country_9'
              WHEN 10 THEN 'Country_10'         
                      ELSE 'Unknown' END  
      
END
在表列公式中的基本用法
当我们在设计模式下创建表时,SQL 服务器会为我们提供每个列的属性,我们可以在其中设置各种属性值,例如列的默认值、列的标识等。每列都有一个特殊属性,即自定义公式,您可以在其中为数据操作设置自己的公式。 让我们举个例子
我们的目标是为列编写一个公式,而该公式负责为另一列设置一个新值。
 
 
下面给出了在表列公式中使用 CASE 的一个简单示例
// SQL CASE statement
(case [Code] when (1) then 'Country_1' when (2) then 'Country_2' _
	when (3) then 'Country_3' when (4) then 'Country_4' when (5) _
	then 'Country_5' when (6) then 'Country_6' when (7) then 'Country_7' _
	when (8) then 'Country_8' when (9) then 'Country_9' when (10) _
	then 'Country_10' else 'Unknown' end)
当您在列“code”中插入/更新一个值时,SQL 服务器将触发与列“code”关联的公式,并最终设置该特定列的值。
 
 
在视图中的基本用法
在视图对象中使用 CASE 表达式没有什么新东西。 就像我之前提到的,CASE 表达式可以在允许标量表达式的任何地方使用,包括在 select 语句的 WHERE 和 HAVING 子句中。
结论
我希望您将了解如何使用 CASE 表达式。 享受!
历史
- 2009 年 8 月 18 日:最初的帖子


