仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1290|回复: 8
打印 上一主题 下一主题

[学习教程] MYSQL编程:sql 中 case when 语法利用办法

[复制链接]
分手快乐 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:15:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
采用DBaaS解决方案,他们也可以使用同大企业一样的技术。在大型组织中,DBaaS可以提供部门级解决MySQL学习教程,而无需IT部门和采购部门的介入,提供更快和更容易的方法来实现小型解决方案。没有,用casewhen来取代就好了.

比方,上面的语句显现中文年代
复制代码代码以下:
selectgetdate()as日期,casemonth(getdate())
when11then十一
when12then十二
elsesubstring(一二三四五六七八九十,month(getdate()),1)
end+月as月份

CASE多是SQL中被误用最多的关头字之一。固然你大概之前用过这个关头字来创立字段,可是它还具有更多用法。比方,你能够在WHERE子句中利用CASE。

起首让我们看一下CASE的语法。在一样平常的SELECT中,其语法以下:
复制代码代码以下:
SELECT<myColumnSpec>=
CASE
WHEN<A>THEN<somethingA>
WHEN<B>THEN<somethingB>
ELSE<somethingE>
END

在下面的代码中必要器具体的参数取代尖括号中的内容。上面是一个复杂的例子:
复制代码代码以下:
USEpubs
GO
SELECT
Title,
PriceRange=
CASE
WHENpriceISNULLTHENUnpriced
WHENprice<10THENBargain
WHENpriceBETWEEN10and20THENAverage
ELSEGifttoimpressrelatives
END
FROMtitles
ORDERBYprice
GO

这是CASE的典范用法,可是利用CASE实在能够做更多的事变。例如说上面的GROUPBY子句中的CASE:
复制代码代码以下:
SELECTNumberofTitles,Count(*)
FROMtitles
GROUPBY
CASE
WHENpriceISNULLTHENUnpriced
WHENprice<10THENBargain
WHENpriceBETWEEN10and20THENAverage
ELSEGifttoimpressrelatives
END
GO

你乃至还能够组合这些选项,增加一个ORDERBY子句,以下所示:
复制代码代码以下:
USEpubs
GO
SELECT
CASE
WHENpriceISNULLTHENUnpriced
WHENprice<10THENBargain
WHENpriceBETWEEN10and20THENAverage
ELSEGifttoimpressrelatives
ENDASRange,
Title
FROMtitles
GROUPBY
CASE
WHENpriceISNULLTHENUnpriced
WHENprice<10THENBargain
WHENpriceBETWEEN10and20THENAverage
ELSEGifttoimpressrelatives
END,
Title
ORDERBY
CASE
WHENpriceISNULLTHENUnpriced
WHENprice<10THENBargain
WHENpriceBETWEEN10and20THENAverage
ELSEGifttoimpressrelatives
END,
Title
GO

注重,为了在GROUPBY块中利用CASE,查询语句必要在GROUPBY块中反复SELECT块中的CASE块。

除选择自界说字段以外,在良多情形下CASE都十分有效。再深切一步,你还能够失掉你之前以为不成能失掉的分组排序了局集。怀疑这些功能在MySQL5.0中的成熟性。充其量它们在MySQL中被支持的时间也就一年左右,而在MySQL学习教程其他关系型数据库中则已经存在了近10年的时间。
爱飞 该用户已被删除
沙发
发表于 2015-1-18 17:49:04 | 只看该作者
财务软件要用SQL也只是后台的数据库而已,软件都是成品的,当然多学东西肯定是有好处的..
透明 该用户已被删除
板凳
发表于 2015-1-22 18:12:20 来自手机 | 只看该作者
可以动态传入参数,省却了动态SQL的拼写。
海妖 该用户已被删除
地板
发表于 2015-1-31 10:47:01 | 只看该作者
两个月啃那本sqlserver2005技术内部-存储引擎,花了几个月啃四本书
5#
发表于 2015-2-6 19:03:40 | 只看该作者
SP4包括用于以下SQLServer2000组件的程序包:Database组件(下载文件:SQL2000-KB884525-SP4-x86.EXE)更新SQLServer2000的32位Database组件,包括数据库引擎、复制、客户端连接组件及工具。有关其他信息,请参阅ReadmeSql2k32Sp4.htm。AnalysisServices组件(下载文件:SQL2000.AS-KB884525-SP4-x86.EXE)更新SQLServer2000的32位AnalysisServices。
变相怪杰 该用户已被删除
6#
发表于 2015-2-18 08:47:11 | 只看该作者
所以你总能得到相应的升级版本,来满足你的需求。
再现理想 该用户已被删除
7#
发表于 2015-3-6 02:41:05 | 只看该作者
我是一个ERP初学者,对于前台运用基本熟悉,但对于后台SQLServer的运用一点也不懂,特想学习下相关资料。至少懂得一些基本的运用。希望各位能给于建议,小弟再谢过!
老尸 该用户已被删除
8#
发表于 2015-3-12 19:02:12 | 只看该作者
我是一个ERP初学者,对于前台运用基本熟悉,但对于后台SQLServer的运用一点也不懂,特想学习下相关资料。至少懂得一些基本的运用。希望各位能给于建议,小弟再谢过!
金色的骷髅 该用户已被删除
9#
发表于 2015-3-20 02:04:58 | 只看该作者
having子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having条件显示特定的组,也可以使用多个分组标准进行分组。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-15 10:54

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表