65.9K
CodeProject 正在变化。 阅读更多。
Home

SQL CASE 表达式的简单用法

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.66/5 (41投票s)

2009 年 8 月 18 日

CPOL

2分钟阅读

viewsIcon

883598

downloadIcon

739

本文将让您了解如何在 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 语句的 WHEREHAVING 子句中。

在本文中,我想展示最常用的 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 服务器会为我们提供每个列的属性,我们可以在其中设置各种属性值,例如列的默认值、列的标识等。每列都有一个特殊属性,即自定义公式,您可以在其中为数据操作设置自己的公式。 让我们举个例子

我们的目标是为列编写一个公式,而该公式负责为另一列设置一个新值。

图 1 - 如何为特定列设置公式

下面给出了在表列公式中使用 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”关联的公式,并最终设置该特定列的值。

Output
图 2 - 当插入/更新列代码值时,列“国家”如何设置值

在视图中的基本用法

在视图对象中使用 CASE 表达式没有什么新东西。 就像我之前提到的,CASE 表达式可以在允许标量表达式的任何地方使用,包括在 select 语句的 WHEREHAVING 子句中。

结论 

我希望您将了解如何使用 CASE 表达式。 享受!

历史

  • 2009 年 8 月 18 日:最初的帖子
© . All rights reserved.