CASE 可能是 SQL 中被误用最多的关键字之一。虽然你可能以前用过这个关键字来创建字段,但是它还具有更多用法。例如,你可以在 WHERE 子句中使用 CASE。
CASE 可能是 SQL 中被误用最多的关键字之一。虽然你可能以前用过这个关键字来创建字段,但是它还具有更多用法。例如,你可以在 WHERE 子句中使用 CASE。
首先让我们看一下 CASE 的语法。在一般的 SELECT 中,其语法如下:
SELECT <myColumnSpec> =
CASE
WHEN <A> THEN <somethingA>
WHEN <B> THEN <somethingB>
ELSE <somethingE>
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
这是 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 块。
除了选择自定义字段之外,在很多情况下 CASE 都非常有用。再深入一步,你还可以得到你以前认为不可能得到的分组排序结果集。
分享到:
相关推荐
- **SQL语句语法**:包括SELECT、INSERT、UPDATE、DELETE等常用语句的使用方法。 - **数据类型**:介绍了SQL Server支持的各种数据类型,如数值类型、字符类型、日期时间类型等。 - **变量与常量**:讲解如何定义...
在SQL Server中,`NVARCHAR`类型用于存储Unicode数据,使用UCS-2字符集,这是一种2字节编码格式,能够支持更广泛的字符集,包括UTF-16。UCS-2是Unicode早期的标准,后来被UTF-16取代,UTF-16提供了更大的扩展性和...
### pb中如何判断SQLServer数据库服务的状态控制启动关闭 在PowerBuilder(简称PB)开发环境中,经常需要对SQL Server数据库的服务进行状态查询、启动或关闭等操作。本文将详细介绍如何利用PB来实现这些功能。 ###...
通过这本书,读者不仅可以全面掌握T-SQL的语法和用法,还能了解到最佳实践和实战技巧,从而在SQL Server 2008环境中编写高效、可靠的数据库代码。对于数据库管理员和开发人员来说,这是一本不可多得的参考书。
- **SQL Server服务**:SQL Server是由微软开发的一款关系型数据库管理系统,它提供了多种服务来支持不同的功能需求,例如SQL Server Database Engine(主要负责数据存储和查询)、SQL Server Agent(用于计划作业)...
Case具有两种格式。简单Case函数和Case搜索函数。
### SQLServer中的汉字转全拼音函数 在数据库管理和数据处理领域,经常需要对文本进行各种形式的转换,以便于检索、排序或者分析等操作。其中一个常见的需求是将汉字转换为拼音,这对于支持中文环境的系统尤其重要...
以上内容主要介绍了 SQL Server 中存储过程中的一些基本语法和操作方法,包括变量定义及赋值、表和临时表的操作、循环以及条件语句等,这些知识点对于理解和使用 SQL Server 存储过程至关重要。
本书首先会介绍T-SQL的基础概念,包括SELECT语句的基本用法,如何从一个或多个表中检索数据,以及如何使用WHERE子句过滤结果。接下来,会深入探讨更高级的查询技巧,如联接(JOIN)操作,用于合并来自不同表的数据;...
`CASE`语句可以在SQL查询中起到条件判断的作用,可以用来根据某个字段的值返回不同的结果或执行不同的逻辑。本例中我们将使用`CASE`语句结合多表关联来实现需求。 **表结构和数据**: - **表1 (T)** 字段:`id`,...
由于提供的文件信息中仅包含标题、描述、标签和部分内容的指示,但未实际给出电子书的具体内容...接下来,将进入具体的示例和操作部分,通过实例演示上述知识点的使用方法和技巧,帮助读者更好地理解和应用T-SQL语言。
SQL Server 2005版本中查询数据库字典的方法与SQL Server 2000相似,但有一些重要的变化需要注意: 1. **系统表和视图的变化**:随着版本的更新,SQL Server 2005引入了新的系统表和视图,以提供更强大的功能和支持...
在SQL Server中,有两种主要的方法可以实现这一转换: 1. 使用CASE语句: CASE语句是SQL中一个非常强大的逻辑表达式,它可以根据条件返回不同的值。在行转列中,我们可以用多个CASE语句来创建新的列,并根据原始...
在 SQL Server 数据库系统中,数据完整性是非常重要的一个方面,它确保了数据库中的数据准确无误且一致。为了维护这种完整性,SQL Server 提供了多种类型的约束机制,包括主键(Primary Key)、唯一键(Unique Key)...
同时,可以结合使用CASE语句进行复杂的条件排序。 4. **行列转换**: 数据的行列转换在数据分析中十分常见。SQL Server提供了PIVOT和UNPIVOT操作来实现这一目的。PIVOT用于将行数据转换为列,而UNPIVOT则是相反的...
### SQL Server 中 CASE 表达式的深入解析与应用实例 #### 概述 在 SQL Server 数据库管理系统中,`CASE` 表达式是一种非常强大的工具,用于在查询语句中进行条件判断和数据处理。它允许用户根据指定的条件返回...
在 SQL Server 中实现行转列的方法多种多样,包括使用静态 SQL 结合 `CASE` 和 `SUM` 函数的方式,以及使用动态 SQL 构建复杂查询的方式。这两种方法各有优势: - **静态 SQL**:适合于列名固定的情况,编写简单...
该书解释并比较了SQL Server 2000和SQL Server 2005在数据库开发相关问题上的解决方案,深入讨论了SQL Server 2005中新增的T-SQL编程特性,包含了大量的代码示例、表示例和逻辑难题以帮助数据库开发人员和管理员理解...
根据提供的文件信息,本文将对如何在SQL Server中实现汉字到拼音的转换这一技术进行详细的解析与探讨。此方法提供了一种直接可用的功能,能够帮助用户轻松地将数据库中的汉字字段转换为对应的拼音形式。 ### SQL ...