SQL语法 case 的使用

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

一、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>
目录
相关文章
|
1天前
|
SQL 数据采集 BI
SQL CASE WHEN语句详解
SQL CASE WHEN语句详解
|
4天前
|
SQL 数据挖掘 数据处理
SQL CASE WHEN语句的使用技巧
SQL CASE WHEN语句的使用技巧
|
5天前
|
SQL PHP
thinkphp之进阶sql语法,持续更新
thinkphp之进阶sql语法,持续更新
9 0
|
6天前
|
SQL
SQL中CASE WHEN THEN ELSE END的用法详解
SQL中CASE WHEN THEN ELSE END的用法详解
|
8天前
|
SQL
SQL语句case when then else end用法
SQL语句case when then else end用法
|
14天前
|
SQL 关系型数据库 MySQL
MySQL数据库基础第一篇(SQL通用语法与分类)
MySQL数据库基础第一篇(SQL通用语法与分类)
|
22天前
|
SQL 机器学习/深度学习 分布式计算
MaxCompute产品使用合集之sql代码中支持插入jinja语法语句吗
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
26天前
|
SQL 关系型数据库 MySQL
MySQL数据库——索引(3)-索引语法(创建索引、查看索引、删除索引、案例演示),SQL性能分析(SQL执行频率,慢查询日志)
MySQL数据库——索引(3)-索引语法(创建索引、查看索引、删除索引、案例演示),SQL性能分析(SQL执行频率,慢查询日志)
24 2
|
26天前
|
SQL 存储 关系型数据库
MySQL数据库——SQL(1)-SQL通用语法、SQL分类、DDL(数据库操作、表操作)
MySQL数据库——SQL(1)-SQL通用语法、SQL分类、DDL(数据库操作、表操作)
25 1
|
26天前
|
SQL 存储 关系型数据库
SQL基础语法
SQL基础语法
15 2