SQL语法 case 的使用

一、CASE 函数是特殊的 Transact-SQL 表达式,它允许按列值显示可选值。数据中的更改是临时的,没有对数据进行永久更改。例如,CASE 函数可以在查询结果集中将 state 列的值为 CA 的行显示为 California。

CASE 函数的组成部分:

  • CASE 关键字。

  • 需要转换的列名称。

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

  • END 关键字。

  • 可选的、定义 CASE 函数别名的 AS 子句。

以下示例将在查询结果集中显示 AdventureWorks 数据库中 Executive and General Administration 组的每个部门的两字母缩写:

USE AdventureWorks
GO
SELECT Name, 
   CASE Name
      WHEN 'Human Resources' THEN 'HR'
      WHEN 'Finance' THEN 'FI'
      WHEN 'Information Services' THEN 'IS'
      WHEN 'Executive' THEN 'EX'
      WHEN 'Facilities and Maintenance' THEN 'FM'
   END AS Abbreviation
FROM AdventureWorks.HumanResources.Department
WHERE GroupName = 'Executive General and Administration'


1、CASE 函数用于计算多个条件并为每个条件返回单个值。CASE 函数通常的用途是将代码或缩写替换为可读性更强的值。下面的示例使用 CASE 函数更改产品系列类别的显示,以使这些类别更易理解。

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;

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

  
USE AdventureWorks;
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

3、 case when then 中判断null的方法
Sql Server 中使用case when then 判断某字段是否为null,和判断是否为字符或数字时的写法不一样,如果不注意,很容易搞错

<span style="font-family: Arial, Helvetica, sans-serif;">错误方法:

CASE columnName WHEN null THEN 0 ELSE columnName END



正确方法:

CASE WHEN columnName is null THEN 0 ELSE columnName END </span>




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰点.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值