`
咖啡舞者
  • 浏览: 128726 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

sql语法case用法

阅读更多



关键词: informix,sql,ca                                           

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

子句中使用 CASE。

首先让我们看一下 CASE 的语法。在一般的 SELECT 中,其语法如下:

SELECT =

CASE

WHEN THEN

WHEN THEN

ELSE

END

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

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

对于informix不能用以上形式,可以如下:

USE pubs

GO

SELECT

Title,

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

Price Range

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

对于informix中形式有所不同,例子

select

case when td_acc1_no[1,3]='610' then get_contrast(td_acc1_no)

                 else get_contrast(td_td_acct_no)

                 end sx_acct_no

,               sum(td_actu_amt) sx_bal

from dcc_tdacnacn where td_td_acct_no in ('6107111001014107111000050182',

'6107111001014107111000050168')

group by   1

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

除了选择自定义字段之外,在很多情况下 CASE 都非常有用。再深入一步,你还可以得到你以前认为不可能得到的分组排序结果集。
分享到:
评论

相关推荐

    SQL中case语法的使用

    ### SQL中的Case语法使用详解 在SQL查询语言中,`CASE`语句是一个非常重要的功能,它可以用来构建复杂的条件逻辑,实现对数据的灵活处理。...希望本文能够帮助大家更好地理解和掌握`CASE`语句的使用方法。

    SQL中Case语句用法讨论_BJ

    1. **数据汇总**:可以使用`Case`语句在聚合函数中根据条件对数据进行分类汇总,例如统计不同国家男女人口数量: ```sql SELECT country, SUM(CASE WHEN sex = '1' THEN population ELSE 0 END) AS male_...

    SQLsevrer CASE用法

    ### SQL Server 中 CASE 表达式的深入解析与应用实例 #### 概述 在 SQL Server 数据库管理系统中,`CASE` 表达式是一种非常强大的工具,用于在查询语句中进行条件判断和数据处理。它允许用户根据指定的条件返回...

    sql语法大全一览表

    以上是根据提供的文件信息整理出的SQL语法知识点及其具体应用示例,涵盖了数据查询、插入、删除、更新、表的创建与修改、权限管理以及一些高级功能如变量声明和循环控制等。这些知识点是SQL学习者必须掌握的基础,也...

    case when和sum case when 写法及拼接字段

    ### Case When 用法 在 SQL 查询语言中,`CASE WHEN` 结构是一种非常有用的工具,可以用来根据条件返回不同的值。它的工作原理类似于编程语言中的 `if...else` 语句,但在 SQL 中用于创建动态列或进行复杂的条件...

    SQL Server存储过程基本语法

    以上内容主要介绍了 SQL Server 中存储过程中的一些基本语法和操作方法,包括变量定义及赋值、表和临时表的操作、循环以及条件语句等,这些知识点对于理解和使用 SQL Server 存储过程至关重要。

    PL/SQL语法帮助

    本压缩包"PL/SQL语法帮助"是专为初学者设计的指南,包含Sqlhelp.hlp和Plshelp.hlp两个帮助文件,旨在帮助新手快速掌握PL/SQL的基本概念和用法。 首先,让我们深入了解一下PL/SQL的主要组成部分: 1. **声明部分**...

    sql 中 case when 语法使用方法

    as 月份 CASE 可能是 SQL 中被误用最多的关键字之一。虽然你可能以前用过这个关键字来创建字段,但是它还具有更多用法。例如,你可以在 WHERE 子句中使用 CASE。 首先让我们看一下 CASE 的语法。在一般的 SELEC

    access和sql语法区别详细

    Access 中的 `IIF` 类似于 SQL Server 的 `Case When Else` 结构,但 SQL Server 还可以使用 `IsNull` 或 `DeCode`。自定义 `GetCaseStr` 可以提供兼容性。 8. **字段类型转换**: Access 的转换方法与 SQL ...

    MySql与SQL语法比较

    - MySQL 的存储过程和函数在语法上与 SQL Server 有些不同,例如变量声明、流程控制结构(如 `CASE`、`WHILE`)和参数传递方式。 - MySQL 支持用户自定义函数(UDF),可以使用 C 编写并编译成库,而 SQL Server ...

    SQL语句大全(很全)sql语句用法

    ### SQL语句大全详解 #### 一、概述 SQL(Structured Query Language)是一种用于管理关系...以上是对SQL语句大全的详细介绍,涵盖了常见的SQL语句及其使用方法,旨在帮助数据库开发者和管理员更好地管理和操作数据。

    sql case when exists not exists in not in

    在SQL查询中,`CASE WHEN`、`EXISTS`、`NOT EXISTS`以及`IN`和`NOT IN`是常用的操作符,它们用于处理复杂的条件判断和数据筛选。这些概念对于理解和编写高效的SQL语句至关重要,尤其是在数据分析和数据库管理中。 `...

    oracle和SQL的语法区别

    Oracle:使用DECODE()函数进行多条件判断,SQL Server则使用CASE语句。 三、索引与视图差异 1. 索引: Oracle支持位图索引,适用于低选择性列,而SQL Server主要使用B树索引。 2. 视图: Oracle的视图可以包含其他...

    SQL类似代码中IF的语法

    Sql_Case_When 很有用的SQL用法!

    SQL CASE及结构转换问题

    这个"SQL CASE及结构转换问题"的主题涉及到两个主要方面:`CASE`语句的使用以及如何处理SQL中的数据结构转换。 首先,让我们深入了解一下`CASE`语句。在SQL中,`CASE`可以被看作是编程语言中的if-else逻辑,用于...

    SqlServer使用 case when 解决多条件模糊查询问题

    在SQL Server中,`CASE WHEN` 语句是一种强大的逻辑表达式,用于处理基于不同条件的复杂查询。在多条件模糊查询中,`CASE WHEN` 可以避免在...了解并熟练掌握`CASE WHEN` 的用法,可以提升SQL编程的灵活性和实用性。

    mysql存储过程之case语句用法实例详解

    MySQL中的CASE语句是SQL语言中的一个重要组成部分,它在存储过程和复杂查询中扮演着条件判断的角色,使得代码更加简洁易读。CASE语句提供了两种形式:简单CASE和可搜索CASE。 1. 简单CASE语句: 简单CASE语句主要...

    Oracle_case_when_用法

    在 Oracle 数据库中,`CASE WHEN` 表达式提供了一种在 SQL 查询中实现条件判断的方法,这使得开发人员能够在不使用 PL/SQL 的情况下编写更为灵活和复杂的查询语句。`CASE WHEN` 与 `DECODE()` 函数相似,但因其符合 ...

Global site tag (gtag.js) - Google Analytics