|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
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年的时间。 |
|