首页 > 数据库 >探讨SQL Server中Case 的不同用法

探讨SQL Server中Case 的不同用法

时间:2022-10-13 22:33:47浏览次数:51  
标签:Case CASE END price WHEN Server SQL ELSE SELECT



探讨SQL Server中Case 的不同用法_字段

CASE

 可能是 SQL 中被误用最多的关键字之一。虽然你可能以前用过这个关键字来创建字段,但是它还具有更多用法。例如,你可以在  WHERE  子句中使用  CASE 。

探讨SQL Server中Case 的不同用法_字段


探讨SQL Server中Case 的不同用法_字段

首先让我们看一下 

CASE  的语法。在一般的  SELECT  中,其语法如下:

探讨SQL Server中Case 的不同用法_字段


探讨SQL Server中Case 的不同用法_字段

SELECT   < myColumnSpec >   =

探讨SQL Server中Case 的不同用法_字段

CASE

探讨SQL Server中Case 的不同用法_字段

WHEN   < A >   THEN   < somethingA >

探讨SQL Server中Case 的不同用法_字段

WHEN   < B >   THEN   < somethingB >

探讨SQL Server中Case 的不同用法_字段

ELSE   < somethingE >

探讨SQL Server中Case 的不同用法_字段

END  

探讨SQL Server中Case 的不同用法_字段


探讨SQL Server中Case 的不同用法_字段

在上面的代码中需要用具体的参数代替尖括号中的内容。下面是一个简单的例子:

探讨SQL Server中Case 的不同用法_字段


探讨SQL Server中Case 的不同用法_字段

USE  pubs

探讨SQL Server中Case 的不同用法_字段

GO

探讨SQL Server中Case 的不同用法_字段

SELECT

探讨SQL Server中Case 的不同用法_字段

    Title,

探讨SQL Server中Case 的不同用法_字段

    

' Price Range '   =

探讨SQL Server中Case 的不同用法_字段

    

CASE

探讨SQL Server中Case 的不同用法_字段

        

WHEN  price  IS   NULL   THEN   ' Unpriced '

探讨SQL Server中Case 的不同用法_字段

        

WHEN  price  <   10   THEN   ' Bargain '

探讨SQL Server中Case 的不同用法_字段

        

WHEN  price  BETWEEN   10   and   20   THEN   ' Average '

探讨SQL Server中Case 的不同用法_字段

        

ELSE   ' Gift to impress relatives '

探讨SQL Server中Case 的不同用法_字段

    

END

探讨SQL Server中Case 的不同用法_字段

FROM  titles

探讨SQL Server中Case 的不同用法_字段

ORDER   BY  price

探讨SQL Server中Case 的不同用法_字段

GO  

探讨SQL Server中Case 的不同用法_字段


探讨SQL Server中Case 的不同用法_字段

这是 

CASE  的典型用法,但是使用  CASE  其实可以做更多的事情。比方说下面的  GROUP   BY  子句中的  CASE :

探讨SQL Server中Case 的不同用法_字段


探讨SQL Server中Case 的不同用法_字段

SELECT   ' Number of Titles ' ,  Count ( * )

探讨SQL Server中Case 的不同用法_字段

FROM  titles

探讨SQL Server中Case 的不同用法_字段

GROUP   BY

探讨SQL Server中Case 的不同用法_字段

    

CASE

探讨SQL Server中Case 的不同用法_字段

        

WHEN  price  IS   NULL   THEN   ' Unpriced '

探讨SQL Server中Case 的不同用法_字段

        

WHEN  price  <   10   THEN   ' Bargain '

探讨SQL Server中Case 的不同用法_字段

        

WHEN  price  BETWEEN   10   and   20   THEN   ' Average '

探讨SQL Server中Case 的不同用法_字段

        

ELSE   ' Gift to impress relatives '

探讨SQL Server中Case 的不同用法_字段

    

END

探讨SQL Server中Case 的不同用法_字段

GO  

探讨SQL Server中Case 的不同用法_字段


探讨SQL Server中Case 的不同用法_字段

你甚至还可以组合这些选项,添加一个 

ORDER   BY  子句,如下所示:

探讨SQL Server中Case 的不同用法_字段


探讨SQL Server中Case 的不同用法_字段

USE  pubs

探讨SQL Server中Case 的不同用法_字段

GO

探讨SQL Server中Case 的不同用法_字段

SELECT

探讨SQL Server中Case 的不同用法_字段

    

CASE

探讨SQL Server中Case 的不同用法_字段

        

WHEN  price  IS   NULL   THEN   ' Unpriced '

探讨SQL Server中Case 的不同用法_字段

        

WHEN  price  <   10   THEN   ' Bargain '

探讨SQL Server中Case 的不同用法_字段

        

WHEN  price  BETWEEN   10   and   20   THEN   ' Average '

探讨SQL Server中Case 的不同用法_字段

        

ELSE   ' Gift to impress relatives '

探讨SQL Server中Case 的不同用法_字段

    

END   AS  Range,

探讨SQL Server中Case 的不同用法_字段

    Title

探讨SQL Server中Case 的不同用法_字段

FROM  titles

探讨SQL Server中Case 的不同用法_字段

GROUP   BY

探讨SQL Server中Case 的不同用法_字段

    

CASE

探讨SQL Server中Case 的不同用法_字段

        

WHEN  price  IS   NULL   THEN   ' Unpriced '

探讨SQL Server中Case 的不同用法_字段

        

WHEN  price  <   10   THEN   ' Bargain '

探讨SQL Server中Case 的不同用法_字段

        

WHEN  price  BETWEEN   10   and   20   THEN   ' Average '

探讨SQL Server中Case 的不同用法_字段

        

ELSE   ' Gift to impress relatives '

探讨SQL Server中Case 的不同用法_字段

    

END ,

探讨SQL Server中Case 的不同用法_字段

    Title

探讨SQL Server中Case 的不同用法_字段

ORDER   BY

探讨SQL Server中Case 的不同用法_字段

    

CASE

探讨SQL Server中Case 的不同用法_字段

        

WHEN  price  IS   NULL   THEN   ' Unpriced '

探讨SQL Server中Case 的不同用法_字段

        

WHEN  price  <   10   THEN   ' Bargain '

探讨SQL Server中Case 的不同用法_字段

        

WHEN  price  BETWEEN   10   and   20   THEN   ' Average '

探讨SQL Server中Case 的不同用法_字段

        

ELSE   ' Gift to impress relatives '

探讨SQL Server中Case 的不同用法_字段

    

END ,

探讨SQL Server中Case 的不同用法_字段

    Title

探讨SQL Server中Case 的不同用法_字段

GO  

探讨SQL Server中Case 的不同用法_字段


探讨SQL Server中Case 的不同用法_字段

注意,为了在 

GROUP   BY  块中使用  CASE ,查询语句需要在  GROUP   BY  块中重复  SELECT  块中的  CASE  块。

探讨SQL Server中Case 的不同用法_字段


探讨SQL Server中Case 的不同用法_字段

除了选择自定义字段之外,在很多情况下 

CASE  都非常有用。再深入一步,你还可以得到你以前认为不可能得到的分组排序结果集。


标签:Case,CASE,END,price,WHEN,Server,SQL,ELSE,SELECT
From: https://blog.51cto.com/u_627724/5754847

相关文章

  • SQL Server联机丛书:查看存储过程
    几个系统存储过程用系统表提供有关存储过程的信息。使用这些存储过程可以:查看用于创建存储过程的Transact-SQL语句。这对于没有用于创建存储过程的Transact-SQL脚本文......
  • SQL Server联机丛书:存储过程及其创建
    存储过程可以使得对数据库的管理、以及显示关于数据库及其用户信息的工作容易得多。存储过程是SQL语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。......
  • mysql数据表的管理
    1.进入数据库use数据库名;2.查看当前数据库下的所有表showtables;3.创建表createtable表名称(列名称类型,列名称类型,列名称类......
  • MySQL事务:事务隔离
    对数据进行并发操作时,事务可以确保数据的完整性,在银行、证券交易等业务场景需要用到它,本文将介绍MySQL事务是如何保证数据的一致性的。目录事务特性事务启动与提交事务回......
  • MySQL日志系统:binlog、redo log和undo log
    日志是MySQL数据库的重要组成部分,比如数据持久化、主从复制、数据回滚等操作都依赖日志系统来实现。本文将介绍MySQL的三种日志:归档日志binlog、重做日志redolog和回滚......
  • MySQL锁:全局锁、表级锁和行锁
    事务的实现离不开MySQL数据库的锁机制,设计锁的目的也是为了处理并发访问问题,本文简单介绍MySQL里面的全局锁、表级锁和行锁三类锁。目录全局锁表级锁表锁1、读锁实例2、......
  • Centos7部署单点mysql
    目录Centos7部署单点mysql一、部署mysql1.1、下载rpm包1.2、安装1.3、启动数据库,修改初始秘密二、创建远程用户,授权Centos7部署单点mysql一、部署mysql1.1、下载rpm包w......
  • 11.1 LAMP架构介绍 11.2 MySQL、MariaDB介绍 11.3/11.4/11.5 MySQL安装
     11.1LAMP架构介绍LAMP是Linux+Apache(httpd)+MySQL+PHP的简称•Linux:操作系统•Apache(httpd):WEB服务器软件,提供WEB服务•MySQL:关系型数据库用于存储数据(字符串)•......
  • MySQL双机热备
     1.MySQL双机热备原理双机热备就是使用MySQL提供的一种主从备份机制实现。所谓双机热备其实是一个复制的过程,复制过程中一个服务器充当主服务器,一个或多个服务器充当从服......
  • MYSQL-->客户端常用工具指令
    mysql这个mysql指的是mysql的客户端管理工具语法mysql选项数据库选项内容-u指定用户名-p指定密码-h指定ip地址-P指定端口-e执行SQL语句并退出-e选项可......