SQL CASE

原创 2005年04月23日 18:32:00
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中case语法的使用

  • 2012年10月20日 12:10
  • 3KB
  • 下载

case语句 sql server

  • 2012年08月24日 09:45
  • 345B
  • 下载

小随笔 SQL语句中的条件判断CASE

小随笔 SQL语句中的条件判断CASE 做了这么多年开发,不怕笑话,还真的很少用CASE语句,毕竟很多判断实际上都是在逻辑层就做好了 不过,CASE用起来还是非常方便好用的。 小...

CASE的用法 (Transact-SQL)

  • 2014年07月16日 16:54
  • 236KB
  • 下载

sql中的case用法

  • 2010年11月19日 11:21
  • 61KB
  • 下载

sql语言中有没有类似C语言中的switch case的语句??

没有,用case   when   来代替就行了.              例如,下面的语句显示中文年月         select   getdate()   as   日期,cas...

SQL__case_when_then_的用法

  • 2013年11月21日 16:46
  • 24KB
  • 下载

SQL中Case语句用法讨论_BJ

  • 2011年09月19日 10:32
  • 4KB
  • 下载

Mysql 一条SQL语句实现批量更新数据,update结合case、when和then的使用案例

Mysql 一条SQL语句实现批量更新数据,update结合case、when和then的使用案例

SQL Server和Access中的条件判断语法(case when和iff)

很多时候为了程序的可扩展性和准确性等我们会在数据库中把对应bool类型或string类型的字段设置为int型。但是在程序中显示的时候我们希望能显示用户友好的内容,这个时候我们就需要把查找到的结果转换成...
  • jumtre
  • jumtre
  • 2013年06月28日 18:08
  • 8048
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SQL CASE
举报原因:
原因补充:

(最多只允许输入30个字)