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 日:最初的帖子