oracle实现mysql的if_oracle中decode函数 VS mysql中的if函数和case函数
oracle中有decode函數(shù),如下:
select sum(decode(sex,'男',0,1)) 男生數(shù) from school;
統(tǒng)計男生數(shù)目,含義為:decode()中sex字段為男時,用1代替,然后計算總和
而mysql中沒有該函數(shù),替代的有case與if函數(shù)。
case函數(shù)
同樣統(tǒng)計男女生人數(shù),語句如下:
SELECT school,COUNT(school) 人數(shù),
SUM(CASE
WHEN sex='男'THEN 1
ELSE 0
END)
男生數(shù),
SUM(CASE
WHEN sex='女'THEN 1
ELSE 0
END)
女生數(shù)
FROM sch
GROUP BY sex,school
CASE可能是 SQL 中被誤用最多的關鍵字之一。雖然你可能以前用過這個關鍵字來創(chuàng)建字段,但是它還具有更多用法。例如,你可以在WHERE子句中使用CASE。
首先讓我們看一下CASE的語法。在一般的SELECT中,其語法如下:
?
SELECT=CASEWHENTHENWHENTHENELSEEND?
在上面的代碼中需要用具體的參數(shù)代替尖括號中的內容。下面是一個簡單的例子:?
?
USEpubs?
GOSELECT???? Title,?
'Price Range'=CASEWHENpriceISNULLTHEN'Unpriced'WHENprice<10THEN'Bargain'WHENpriceBETWEEN10and20THEN'Average'ELSE'Gift to impress relatives'ENDFROMtitles?
ORDERBYprice?
GO?
這是CASE的典型用法,但是使用CASE其實可以做更多的事情。比方說下面的GROUPBY子句中的CASE:?
?
SELECT'Number of Titles',Count(*)?
FROMtitles?
GROUPBYCASEWHENpriceISNULLTHEN'Unpriced'WHENprice<10THEN'Bargain'WHENpriceBETWEEN10and20THEN'Average'ELSE'Gift to impress relatives'ENDGO?
你甚至還可以組合這些選項,添加一個ORDERBY子句,如下所示:?
?
USEpubs?
GOSELECTCASEWHENpriceISNULLTHEN'Unpriced'WHENprice<10THEN'Bargain'WHENpriceBETWEEN10and20THEN'Average'ELSE'Gift to impress relatives'ENDASRange,?
???? Title?
FROMtitles?
GROUPBYCASEWHENpriceISNULLTHEN'Unpriced'WHENprice<10THEN'Bargain'WHENpriceBETWEEN10and20THEN'Average'ELSE'Gift to impress relatives'END,?
???? Title?
ORDERBYCASEWHENpriceISNULLTHEN'Unpriced'WHENprice<10THEN'Bargain'WHENpriceBETWEEN10and20THEN'Average'ELSE'Gift to impress relatives'END,?
???? Title?
GO?
注意,為了在GROUPBY塊中使用CASE,查詢語句需要在GROUPBY塊中重復SELECT塊中的CASE塊。
if語句
同樣統(tǒng)計男女生人數(shù),語句如下:
SELECT school,COUNT(school) 人數(shù),SUM(IF(sex='男',1,0)) 男生數(shù),SUM(IF(sex='女',1,0)) 女生數(shù),
SUM(IF(pass=1,1,0)) pass1,SUM(IF(pass=0,1,0)) pass0,
SUM(IF(state=1,1,0)) state1,SUM(IF(state=0,1,0)) state0
FROM sch
GROUP BY sex,school
語法和decode類似。
總結
以上是生活随笔為你收集整理的oracle实现mysql的if_oracle中decode函数 VS mysql中的if函数和case函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PbootCms微信小程序社交电商软件公
- 下一篇: 老歌新唱--使用VB6开发的Active