使用 CASE

CASE 表达式用于计算多个条件并为每个条件返回单个值。例如,它允许按列值显示可选值。数据中的更改是临时的,因此不存在对数据的永久更改。

CASE 表达式的组成部分:

  • CASE 关键字。

  • 要转换的列名称。

  • 指定搜索内容表达式的 WHEN 子句和指定要替换它们的表达式的 THEN 子句。

  • 可选的、定义比较运算计算结果不为 TRUE 时返回的表达式的 ELSE 子句。

  • END 关键字。

  • 可选的、定义 CASE 表达式别名的 AS 子句。

CASE 表达式通常的用途是将代码或缩写替换为可读性更强的值。下面的示例使用 CASE 函数更改产品系列类别的显示,以使这些类别更易理解。

USE AdventureWorks2008R2;
GO
SELECT   ProductNumber, Category =
      CASE ProductLine
         WHEN 'R' THEN 'Road'
         WHEN 'M' THEN 'Mountain'
         WHEN 'T' THEN 'Touring'
         WHEN 'S' THEN 'Other sale items'
         ELSE 'Not for sale'
      END,
   Name
FROM Production.Product
ORDER BY ProductNumber;
GO

CASE 函数的另一个用途是对数据进行分类。以下查询使用 CASE 函数对价格进行分类。

USE AdventureWorks2008R2;
GO
SELECT   ProductNumber, Name, 'Price Range' = 
      CASE 
         WHEN ListPrice =  0 THEN 'Mfg item - not for resale'
         WHEN ListPrice < 50 THEN 'Under $50'
         WHEN ListPrice >= 50 and ListPrice < 250 THEN 'Under $250'
         WHEN ListPrice >= 250 and ListPrice < 1000 THEN 'Under $1000'
         ELSE 'Over $1000'
      END
FROM Production.Product
ORDER BY ProductNumber ;
GO

有关更多示例,请参阅 CASE (Transact-SQL)