1.Case函數(shù)的用法
?(1)使用類似:switch-case與if-else?if。
? (2)語(yǔ)法:
case?[字段]
when?表達(dá)式?then?顯示數(shù)據(jù)
when?表達(dá)式?then?顯示數(shù)據(jù)
else?顯示數(shù)據(jù)
end
? (3)百分制轉(zhuǎn)換素質(zhì)教育
??? 1)如圖:我們要將顯示的數(shù)據(jù)轉(zhuǎn)換成ABCDE,規(guī)則是90分以上顯示A,80分以上顯示B,以此類推。
?
? ?2)執(zhí)行的SQL語(yǔ)句是:
1 Select ID,TestBase, 2 3 Case 4 5 When testBase>=90 then ‘A’ 6 7 When testBase>=80 then ‘B’ 8 9 When testBase>=70 then ‘C’ 10 11 When testBase>=60 then ‘D’ 12 13 Else ‘E’ end as testBaseLevel, 14 15 testBeyond,testDate from Score
?? 3)最后的執(zhí)行結(jié)果如圖所示:
?
? (4)注意:
?? 1)寫case對(duì)應(yīng)的就寫上end。
?? 2)end后面跟別名(case與end之間相當(dāng)于一個(gè)字段(對(duì)象))
?(5)和C#的switch-語(yǔ)法作比較
1)C#?
Switch(變量)
{
Case?常量1:結(jié)果1;break;
Case?常量2:結(jié)果2;break;
Default?:默認(rèn)結(jié)果;break;
}
2)?SQL
SQL語(yǔ)法我在上面寫了,可以對(duì)比看一下。
(6)對(duì)應(yīng)的if-else?if語(yǔ)法
1)?C#
If(表達(dá)式1)?{結(jié)果1;}
else?if(表達(dá)式2)?{結(jié)果2;}
else?{默認(rèn)結(jié)果;}
2)SQL?Server
case
when?表達(dá)式1?then?顯示1
when?表達(dá)式2?then?顯示2
else?默認(rèn)顯示
end
3)舉例說(shuō)明,如果我們存放性別的時(shí)候在數(shù)據(jù)庫(kù)中是用f,m標(biāo)識(shí)的,現(xiàn)在我們想要用男女標(biāo)識(shí),SQL語(yǔ)句如下:
1 Select ID,Name,stuSex, 2 3 case 4 5 when stuSex=’m’ then ‘男’ 6 7 when syuSex=’f’ then ‘女’ 8 9 else ‘其它’ 10 11 end as stuSexType, 12 13 stuDate from Student。
? (7)練習(xí)案例:
1)在數(shù)據(jù)庫(kù)中執(zhí)行這段代碼:
1 use Test 2 3 go 4 5 create table PracticeTest 6 7 ( 8 9 number varchar(10), 10 11 amount int 12 13 ) 14 15 insert into PracticeTest(number,amount) values('RK1',10) 16 17 insert into PracticeTest(number,amount) values('RK2',20) 18 19 insert into PracticeTest(number,amount) values('RK3',-30) 20 21 insert into PracticeTest(number,amount) values('RK4',-10)
2)實(shí)現(xiàn)的效果如下:
?
3)可以看出,首先select中應(yīng)該有三個(gè)字段,并且將數(shù)據(jù)大于0的放到收入中,那么另一個(gè)為0,并且將小于0的放到支出里面,另一個(gè)為0,下面我們寫實(shí)現(xiàn)的SQL語(yǔ)句:
1 select number as 單號(hào), 2 3 case 4 5 when amount>0 then amount 6 7 else 0 8 9 end as 收入, 10 11 case 12 13 when amount<0 then -amount 14 15 else 0 16 17 end as 支出 18 19 from PracticeTest
?(8)一道面試題的練習(xí):
1)如圖:我們寫出下面執(zhí)行的代碼,數(shù)據(jù)庫(kù)大家自己建或者我在下面附加腳本了,大家制藥執(zhí)行一下即可:
?
2)執(zhí)行的SQL語(yǔ)句:
1 create table Score 2 3 ( 4 5 學(xué)號(hào) nvarchar(10), 6 7 課程 nvarchar(10), 8 9 成績(jī) int 10 11 ) 12 13 insert into Score values('0001','語(yǔ)文',87) 14 15 insert into Score values('0001','數(shù)學(xué)',79) 16 17 insert into Score values('0001','英語(yǔ)',95) 18 19 insert into Score values('0002','語(yǔ)文',69) 20 21 insert into Score values('0002','數(shù)學(xué)',84)
3)實(shí)現(xiàn)功能的SQL語(yǔ)句的書寫
1 select 學(xué)號(hào),sum( 2 3 case 4 5 when 課程='語(yǔ)文' then 成績(jī) 6 7 else 0 8 9 end) as 語(yǔ)文,sum( 10 11 case 12 13 when 課程='數(shù)學(xué)' then 成績(jī) 14 15 else 0 16 17 end) as 數(shù)學(xué),sum( 18 19 case 20 21 when 課程='英語(yǔ)' then 成績(jī) 22 23 else 0 24 25 end) as 英語(yǔ) 26 27 from score group by 學(xué)號(hào)
?
相信自己,你就是下一個(gè)奇跡!