日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

oracle实现mysql的if_oracle中decode函数 VS mysql中的if函数和case函数

發布時間:2023/12/9 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle实现mysql的if_oracle中decode函数 VS mysql中的if函数和case函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

oracle中有decode函數,如下:

select sum(decode(sex,'男',0,1)) 男生數 from school;

統計男生數目,含義為:decode()中sex字段為男時,用1代替,然后計算總和

而mysql中沒有該函數,替代的有case與if函數。

case函數

同樣統計男女生人數,語句如下:

SELECT school,COUNT(school) 人數,

SUM(CASE

WHEN sex='男'THEN 1

ELSE 0

END)

男生數,

SUM(CASE

WHEN sex='女'THEN 1

ELSE 0

END)

女生數

FROM sch

GROUP BY sex,school

CASE可能是 SQL 中被誤用最多的關鍵字之一。雖然你可能以前用過這個關鍵字來創建字段,但是它還具有更多用法。例如,你可以在WHERE子句中使用CASE。

首先讓我們看一下CASE的語法。在一般的SELECT中,其語法如下:

?

SELECT=CASEWHENTHENWHENTHENELSEEND?

在上面的代碼中需要用具體的參數代替尖括號中的內容。下面是一個簡單的例子:?

?

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語句

同樣統計男女生人數,語句如下:

SELECT school,COUNT(school) 人數,SUM(IF(sex='男',1,0)) 男生數,SUM(IF(sex='女',1,0)) 女生數,

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函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。