数据库

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

探讨SQL Server中Case 的不同用法

分享到:
【字体:
导读:
         摘要: CASE 可能是 SQL 中被误用最多的要害字之一。固然你可能以前用过这个要害字来创立字段,但是它还具有更多用法。例如,你可以在 WHERE 子句中应用 CASE。 首先让我们看一下 CASE 的语法...

探讨SQL Server中Case 的不同用法

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 
 
这是 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 的不同用法
通过JDBC连接DB2数据库技巧
通过JDBC连接DB2数据库技巧 关于DB2数据库的JDBC连接文章有很多,比拟出名的有诸如“JDBC数据库连接大全”和“JSP的DB2连接数据库”,固然都是很具体的材料,也都说解决了前人没有解决的标题,但还是有很多纰漏。我就这两天的经验给大家写一篇关于JDBC连接数据库的文章,以解决一部分人的疑问。 第一、JDBC是JDK的一部分(至...
深进浅出SQL教程之嵌套SELECT语句
深进浅出SQL教程之嵌套SELECT语句 嵌套SELECT语句也叫子查询,形如: SELECT name FROM bbc WHERE region = (SELECT region FROM bbc WHERE name = &#039;Brazil&#039;) 一个 SELECT 语句的查询成果可以作为另一个语句的输进值。 上面的SQL语句作用为获得和&#039;Brazil&#039;(巴西)同属一个地区的所有国家。 子查询不但...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……