博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何使用Case进行简单判断
阅读量:6693 次
发布时间:2019-06-25

本文共 2236 字,大约阅读时间需要 7 分钟。

Case具有两种格式。简单Case函数和Case搜索函数。 

--简单Case函数

CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END

--Case搜索函数

CASE WHEN sex = '1' THEN '男' WHEN sex = '2' THEN '女' ELSE '其他' END

这两种方式,可以实现相同的功能。简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式。 
还有一个需要注意的问题,Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略。

例子:

有一张表,里面有3个字段:语文,数学,英语。其中有3条记录分别表示语文70分,数学80分,英语58分,请用一条sql语句查询出这三条记录并按以下条件显示出来(并写出您的思路): 
大于或等于80表示优秀,大于或等于60表示及格,小于60分表示不及格。 
显示格式: 
语文 数学 英语 
及格 优秀 不及格 
------------------------------------------

select(case when 语文>=80 then '优秀'when 语文>=60 then '及格'else '不及格') as 语文,(case when 数学>=80 then '优秀'when 数学>=60 then '及格'else '不及格') as 数学,(case when 英语>=80 then '优秀'when 英语>=60 then '及格'else '不及格') as 英语,from table

CASE 可能是 SQL 中被误用最多的关键字之一。虽然你可能以前用过这个关键字来创建字段,但是它还具有更多用法。例如,你可以在 WHERE 子句中使用 CASE。

首先让我们看一下 CASE 的语法。在一般的 SELECT 中,其语法如下:

SELECT 
=CASEWHEN
THEN
WHEN
THEN
ELSE
END

在上面的代码中需要用具体的参数代替尖括号中的内容。下面是一个简单的例子:

USE pubsGOSELECTTitle,'Price Range' =CASEWHEN price IS NULL THEN 'Unpriced'WHEN price < 10 THEN 'Bargain'WHEN price BETWEEN 10 and 20 THEN 'Average'ELSE 'Gift to impress relatives'ENDFROM titlesORDER BY priceGO

这是 CASE 的典型用法,但是使用 CASE 其实可以做更多的事情。比方说下面的 GROUP BY 子句中的 CASE:

SELECT 'Number of Titles', Count(*)FROM titlesGROUP BYCASEWHEN price IS NULL THEN 'Unpriced'WHEN price < 10 THEN 'Bargain'WHEN price BETWEEN 10 and 20 THEN 'Average'ELSE 'Gift to impress relatives'ENDGO

你甚至还可以组合这些选项,添加一个 ORDER BY 子句,如下所示:

USE pubsGOSELECTCASEWHEN 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,TitleFROM titlesGROUP BYCASEWHEN price IS NULL THEN 'Unpriced'WHEN price < 10 THEN 'Bargain'WHEN price BETWEEN 10 and 20 THEN 'Average'ELSE 'Gift to impress relatives'END,TitleORDER BYCASEWHEN price IS NULL THEN 'Unpriced'WHEN price < 10 THEN 'Bargain'WHEN price BETWEEN 10 and 20 THEN 'Average'ELSE 'Gift to impress relatives'END,TitleGO

注意,为了在 GROUP BY 块中使用 CASE,查询语句需要在 GROUP BY 块中重复 SELECT 块中的 CASE 块。

除了选择自定义字段之外,在很多情况下 CASE 都非常有用。再深入一步,你还可以得到你以前认为不可能得到的分组排序结果集。

本文转自邴越博客园博客,原文链接:http://www.cnblogs.com/binyue/p/3383197.html,如需转载请自行联系原作者
你可能感兴趣的文章
Linux 部署websphere
查看>>
Nginx自动跳转https
查看>>
chapter1 Accessing the command line using the local console
查看>>
“can’t create transaction lock on /var/lib/rpm/__db.000”错误解决
查看>>
siege 测试
查看>>
微博一键分享主要通过对指定 URL 添加各种参数来实现
查看>>
panabit+syslog打造中小型企业流量监控系统
查看>>
苏州朋友公司 windows server 2008 打印机管理
查看>>
我的友情链接
查看>>
aotufs
查看>>
Mysql服务启动1067错误
查看>>
HTML小结
查看>>
django表单模块学习
查看>>
<ps> ps aux 和ps -aux和 ps -ef的区别和选择
查看>>
Microsoft Office Web Apps Server2013 For Lync2013 PPT部署安装
查看>>
2012 多用户远程
查看>>
电脑蓝屏代码含义
查看>>
大三现在,大四第一学期就要实习
查看>>
最基础的一些入门级Android源码例子整理
查看>>
解决grails一些莫名其妙的错误com.sun.proxy.$Proxy35
查看>>