`

Sql server 中的 CASE 语句

阅读更多

CASE 具有两种格式:


Simple CASE function: CASE input_expression
     WHEN when_expression THEN result_expression
    [ ...n ]
     [
    ELSE else_result_expression
     ]
END
Searched CASE function:
CASE
     WHEN Boolean_expression THEN result_expression
    [ ...n ]
     [
    ELSE else_result_expression
     ]
END


A. 使用带有简单 CASE 函数的 SELECT 语句
在 SELECT 语句中,简单 CASE 函数仅检查是否相等,而不进行其他比较。以下示例使用 CASE 函数更改产品系列类别的显示,以使这些类别更易理解。
USE AdventureWorks;
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
 
B. 使用带有简单 CASE 函数和 CASE 搜索函数的 SELECT 语句
在 SELECT 语句中,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


以上内容来自Sql server 2005帮助文档


其他Case语句实例:

 

 

USE pubs
GO
SELECT
    Title,
    'Price Range' =
    CASE
        WHEN price IS NULL THEN 'Unpriced'
        WHEN price < 10 THEN 'Bargain'
        WHEN price BETWEEN 10 and 20 THEN 'Average'
        ELSE 'Gift to impress relatives'
    END
FROM titles
ORDER BY price
GO

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

 

SELECT 'Number of Titles', Count(*)
FROM titles
GROUP BY
    CASE
        WHEN price IS NULL THEN 'Unpriced'
        WHEN price < 10 THEN 'Bargain'
        WHEN price BETWEEN 10 and 20 THEN 'Average'
        ELSE 'Gift to impress relatives'
    END
GO

  你甚至还可以组合这些选项,添加一个 ORDER BY 子句,如下所示:

 

USE pubs
GO
SELECT
    CASE
        WHEN price IS NULL THEN 'Unpriced'
        WHEN price < 10 THEN 'Bargain'
        WHEN price BETWEEN 10 and 20 THEN 'Average'
        ELSE 'Gift to impress relatives'
    END AS Range,
    Title
FROM titles
GROUP BY
    CASE
        WHEN price IS NULL THEN 'Unpriced'
        WHEN price < 10 THEN 'Bargain'
        WHEN price BETWEEN 10 and 20 THEN 'Average'
        ELSE 'Gift to impress relatives'
    END,
    Title
ORDER BY
    CASE
        WHEN price IS NULL THEN 'Unpriced'
        WHEN price < 10 THEN 'Bargain'
        WHEN price BETWEEN 10 and 20 THEN 'Average'
        ELSE 'Gift to impress relatives'
    END,
    Title
GO

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

这部分内容来自: http://database.ctocio.com.cn/tips/76/7000576.shtml


注意:Simple CASE Function不能用来判断null值.

如果    case 表达式1 null then 0 else 表达式2, 它永远是执行表达式2,即使表达式1的值是null

应该这样写:  case when 表达式1 is null then 0 else 表达式,


 

分享到:
评论

相关推荐

    SQL Server中CASE语句的教学研究.pdf

    SQL Server中CASE语句的教学研究.pdf

    case语句 sql server

    case语句 sql server case语句

    SQL Server中Case 的不同用法

    CASE表达式通常在SELECT语句中用来根据特定条件为数据列创建新的计算字段。例如,你可以根据书籍的价格范围给价格打标签。如以下示例所示,当价格为空时,标签为"Unpriced";价格小于10,则为"Bargain";介于10到20...

    SQLserver常用语句大全

    本资源摘要信息涵盖了 SQL Server 中常用的语句大全,包括数据操作、数据定义、数据控制、事务控制、程序化 SQL 等方面的知识点。 一、数据操作 * SELECT 语句:从数据库表中检索数据行和列 * INSERT 语句:向...

    怎样用SQL Server 2008 SQL语句将Excel数据...

    如果需要对导入的数据进行一些预处理,比如根据某些字段值进行转换或映射等,可以在SQL语句中加入更多的逻辑。例如,以下示例代码展示了如何根据Excel中的一列数据映射到不同的数值,并与另一个表进行关联: ```sql...

    Delphi中sql语句的使用总结

    ### Delphi中SQL语句的使用总结 在Delphi中使用SQL语句是与数据库进行交互的重要手段之一。本文将详细介绍如何在Delphi环境中构造和执行SQL查询,并给出具体的示例来帮助理解。 #### 一、基本SQL查询的构建 在...

    SqlServer语句自动提示插件

    5. **代码片段**:预定义的代码片段库允许用户快速插入常见的SQL结构,如JOIN、CASE语句等,提高编码速度。 6. **团队协作**:支持版本控制,使得团队成员可以共享代码风格和片段,确保项目代码的一致性。 7. **跨...

    SQL Server查询中的特殊字符处理(C#代码)

    特殊字符,如方括号、单引号、百分号、下划线和脱字号等,在SQL语句中有特定的意义,若不正确处理,可能会导致SQL语法错误或注入攻击。本文将深入探讨在SQL Server查询中如何通过C#代码来处理这些特殊字符,以确保...

    PB脚本中SQL语句写法与SQL中语句写法对照

    在SQL语言中,可以使用Update表名Set字段名=case字段名when值1then值2else值三endFrom表名Where条件语句来实现条件语句的写法。 四、取余函数Mod() 在PB脚本中,可以使用Mod(要取余数的值,取余值)函数来实现取余数...

    SQL server查询语句例子

    SQL Server 查询语句是数据库管理系统中的一种基本语言,用于对数据库进行各种操作。下面是一些经典且实用的 SQL Server 查询语句实例,涵盖了多种查询场景和技术。 1. 查找员工的编号、姓名、部门和出生日期 ...

    SQL server 语句大全

    根据给定的文件标题、描述、标签以及部分内容,下面将...以上是对SQL Server中各种基本概念和操作的概述,这些知识点涵盖了SQL Server的核心功能和技术要点。掌握这些内容可以帮助您更好地管理和操作SQL Server数据库。

    oracle到sqlserver存储过程语法转换

    在数据库迁移项目中,从Oracle迁移到SQL Server是一种常见的场景。本文旨在提供一份详细的指南,帮助开发者更好地理解这两种数据库系统在存储过程方面的语法差异,并指导如何进行有效的转换。 #### 一、基本语法...

    MSSQL性能监控SQL语句

    本文将深入探讨MSSQL性能监控中的几个关键SQL语句,帮助数据库管理员(DBA)和开发者更好地理解和管理MSSQL的性能。 ### 1. sys.dm_exec_query_stats:查询统计信息 `sys.dm_exec_query_stats`是MSSQL中一个非常...

    Sql Server与Oracle的区别

    3. **函数替换**:Oracle的函数如TO_DATE或DECODE等,需要替换为Sql Server的对应函数,例如CONVERT或CASE语句。 4. **比较运算符**:检查所有比较运算符,例如Oracle中的`= ANY`或`= ALL`在Sql Server中可能是`= ...

    sqlserver经典 2005技术内幕 中文pdf版 4本全

    此外,可能会讨论到T-SQL中的流程控制结构,如IF...ELSE、WHILE和CASE语句。 第三本,《Microsoft SQL Server 2005技术内幕.存储引擎》会深入数据库内部,探讨存储引擎的工作原理。这包括了表和索引的物理结构、...

    在SQL语句如何获得MSSQLSERVER登录用户和密码

    sysusers 系统视图包含了 SQL Server 实例中的所有登录用户信息,可以使用以下语句来获取登录用户和密码: ``` SELECT name, password FROM sysusers WHERE name = USER_NAME() ``` 五、穷举法破解 SQL Server ...

    Inside Microsoft SQL Server 2008 T-SQL Programming.pdf

    - **事务处理**:阐述了事务的基本概念及其在SQL Server中的实现方式,包括如何使用BEGIN TRANSACTION、COMMIT和ROLLBACK语句来确保数据的一致性和完整性。 #### 四、性能优化与最佳实践 为了帮助读者更好地利用...

    用于生成数据字典的SQL语句

    /*SQL Server数据库字典(查询所有的表结构)*/ SELECT TOP 100 PERCENT --a.id, CASE WHEN a.colorder = 1 THEN d.name ELSE '' END AS 表名, CASE WHEN a.colorder = 1 THEN isnull(f.value, '') ELSE '' END AS ...

    sql server 2000数据库常有查询语句

    根据提供的文件信息,我们可以归纳总结出...这些查询语句不仅展示了SQL Server 2000中常用的查询技巧,还提供了实际应用场景中的解决方案。通过理解和掌握这些查询语句,可以帮助开发人员更高效地处理数据库中的数据。

    sql server 之sql语句教程

    ### SQL Server 数据库管理之 SQL 语句教程 #### SQL 指令概览与应用场景 **SQL(Structured Query Language)** 是一种用于管理和处理关系型数据库的标准语言。本教程旨在帮助初学者乃至有一定基础的专业人士掌握...

Global site tag (gtag.js) - Google Analytics