SQLSERVER-CASE关键词的用法 .

转载 2013年12月05日 12:16:13
在Oralce中有个函数为Decode(),感觉非常好用,但是此函数为Oracle所独有,在SQLSERVER和MYSQL中实现与之相类似的功能还无相关函数,但通过CASE关键词可实现类似功能。
1 》》首先让我们看一下 CASE 的语法。在一般的 SELECT 中,其语法如下:

SELECT =
CASE
WHEN THEN
WHEN THEN
ELSE
END


2 》》 我在SQLSERVER2000的实践

表t_notice有字段result为INT类型,有三种值:0表示发送成功,1表示发送失败,-1表示未发送,需查询出RESULT的值并返回数值所代表的中文。
  SELECT count(*), "result"=CASE        //单引号内的result为别名
  WHEN result=0 THEN "发送成功"
  WHEN result=1 THEN "发送失败"
  WHEN result=-1 THEN "未发送"
  END
  FROM t_notice
  ORDER BY  result

3 》》用Hibernate做持久化,HQL的写法
  SELECT count(*), CASE  WHEN result=0 THEN "发送成功"
  WHEN result=1 THEN "发送失败"
  WHEN result=-1 THEN "未发送"
  END
  FROM TNotice
  ORDER BY  result

注: TNotice为持久化类类名,HQL用CASE时,无需为查询字段加别名。


4 》》以上是 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

你甚至还可以组合这些选项,添加一个 ORDER BY 子句,如下所示:
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


注意,为了在 GROUP BY 块中使用 CASE,查询语句需要在 GROUP BY 块中重复 SELECT 块中的 CASE 块。
除了选择自定义字段之外,在很多情况下 CASE 都非常有用。再深入一步,你还可以得到你以前认为不可能得到的分组排序结果集
 
原文地址:http://blog.csdn.net/jojoy_828/article/details/1911366

相关文章推荐

CASE的用法 (Transact-SQL)

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

详解volatile关键词的用法1

from:http://baike.baidu.com/view/608706.htm   一,volatile是什么?          volatile是一个类型修饰符(type speci...

SQL中Case语句用法讨论_BJ

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

sqlserver中case的使用

case的定义是计算条件列表并返回多个可能结果表达式之一。如果不用case,要达到显示,修改,排序等功能,有时必须要用多条语句来实现,而case则只须用一条语句。1、在查询显示中使用,这样可以按给定的...
  • jmzxsgs
  • jmzxsgs
  • 2011年02月17日 21:57
  • 219

SQL中CASE关键字的使用

使用方法代码示例CASE关键字有两种使用方法,分别是‘简单case函数’和‘case搜索函数’简单case函数CASE sex WHEN '1' THEN '男' WHEN '2' T...

SqlServer if else和case

if else   要提示的是,写语句的时候 单引号的引用:用到单引号的一律两个单引号代替   USE [a] GO /****** Object: StoredProcedur...

关于sqlserver中查询语句中嵌套case语句使用方法

文章转自ryxxlong的博客Sql server 中的 CASE 语句文章, 链接http://ryxxlong.iteye.com/blog/531221 写的比较详细,具体内容如下,...

synchronized关键字的用法详解

  • 2011年03月17日 10:15
  • 54KB
  • 下载

Axure的基本操作-为部件添加事件(add case)

本次以矩形部件,实现点击事件,链接到百度页面作为一个例子,来介绍如何进行为部件添加事件。...
  • Ada54
  • Ada54
  • 2016年03月23日 14:55
  • 8018
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SQLSERVER-CASE关键词的用法 .
举报原因:
原因补充:

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