分手快乐 发表于 2015-1-16 22:15:55

MYSQL编程:sql 中 case when 语法利用办法

采用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技术内部-存储引擎,花了几个月啃四本书

仓酷云 发表于 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。

变相怪杰 发表于 2015-2-18 08:47:11

所以你总能得到相应的升级版本,来满足你的需求。

再现理想 发表于 2015-3-6 02:41:05

我是一个ERP初学者,对于前台运用基本熟悉,但对于后台SQLServer的运用一点也不懂,特想学习下相关资料。至少懂得一些基本的运用。希望各位能给于建议,小弟再谢过!

老尸 发表于 2015-3-12 19:02:12

我是一个ERP初学者,对于前台运用基本熟悉,但对于后台SQLServer的运用一点也不懂,特想学习下相关资料。至少懂得一些基本的运用。希望各位能给于建议,小弟再谢过!

金色的骷髅 发表于 2015-3-20 02:04:58

having子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having条件显示特定的组,也可以使用多个分组标准进行分组。
页: [1]
查看完整版本: MYSQL编程:sql 中 case when 语法利用办法