欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【探讨SQL Server中Case 的不同用法】,下面是详细的分享!
探讨SQL Server中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 Server中Case 的不同用法,下面是编辑为你推荐的有价值的用户互动:
相关问题:if和in case of的用法有什么不同呢?谢谢!
答:if 如果, 引导“条件状语从句” in case of 是介词, 后面接名词,代词, 不能接状语从句 如不明白请追问,如果满意请【采纳】 祝学习进步 >>详细
相关问题:sql语句中case语句用法
答:不知道你具体什么数据库,,给出sqlserver,你上面写的就对了, 给你写出详细的测试记录吧 CREATE TABLE test(a INT,b VARCHAR(10))INSERT INTO dbo.test ( a, b )SELECT 1,'a'UNION ALLSELECT 2,'b'UNION ALLSELECT null,'c'---这里加了一条数据... >>详细
相关问题:SQL Server 2005 CASE的具体用法说明?
答:使用 CASE CASE 函数是特殊的 Transact-SQL 表达式,它允许按列值显式可选值。数据中的更改是临时的,没有对数据进行永久更改。例如,CASE 函数可以在state列中有 CA 值的行的查询结果集内显示 California。 CASE 函数包含: CASE 关键字。 需要... >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
