最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SQL Server Case表達式使用方式

 更新時間:2024年12月25日 08:41:09   作者:-小龍人  
在SQL Server中,Case表達式可以用于條件分支,包括在Select、Update和GroupBy中使用,可以優(yōu)化SQL語句,提高效率

SQL Server Case表達式

在SQL Server中,在處理條件分支時,使用Case表達式十分便利,對于Case的表達基本用法很簡單,但它還有一些我們意想不到的寫法,可以為我們的SQL優(yōu)化,起到事半功倍的效果。 

1.常用Select用法 

例如:

在人物表中對于性別列,我們可以使用數(shù)字1表示男,2表示女,0表示其他,在搜索表示數(shù)據(jù)時,使用Case表達式如下:

--簡單Case表達式寫法
SELECT Id,
	Name,
	Age,
	CASE SEX 
		WHEN '1' THEN '男'
		WHEN '2' THEN '女'
		ELSE '未知' 
	END AS 性別
 FROM dbo.Person

--搜索Case表達式
SELECT Id,
	Name,
	Age,
	CASE  
		WHEN SEX= '1' THEN '男'
		WHEN SEX= '2' THEN '女'
		ELSE '未知' 
	END AS 性別
FROM dbo.Person

這里的兩種寫法,簡單表達式和搜索表達式效果是一樣的,可以根據(jù)自己喜好寫。 

注意事項:

當Case表達式執(zhí)行時,匹配到第一個when時,執(zhí)行就結(jié)束了,后面的when條件不會再去匹配,所以要注意條件范圍大小的順序。盡量寫else條件,否則顯示的數(shù)據(jù)可能是你意料之外的。

2.Update中使用Case表達式

當需要更新某個字段需要面對多種情況時,一般由對最底層的條件依次往上多次去更新,這樣很容易出現(xiàn)事故,使用Case 表達式可以一次更新。 

例如:

針對一張分數(shù)表,分數(shù)在 [60-70) 內(nèi)分數(shù) * 0.6,分數(shù)在 [70-80) 內(nèi)分數(shù) * 0.7,分數(shù)在 [80-90) 內(nèi)分數(shù) * 0.8,分數(shù)在 [90-100] 內(nèi)分數(shù) * 0.9。

分數(shù)表如下:

如果按條件一步步去更新,這里一定不能先去更新[90-100]分數(shù)段的成績,因為這個分數(shù)段的成績更新后成績在[81-90]范圍內(nèi),會被后面的更新再次更新,所以只能從最底層條件[60-70)條件往上依次多次去更新。

如果使用Case表達式可以一次更新所有情況

Update Score 
  Set Score= 
  		Case When Score>=90 And Score<=90 Then Score*0.9
		   	 When Score>=80 And Score<90 Then Score*0.8
		     When Score>=70 And Score<80 Then Score*0.7
		     When Score>=60 And Score<70 Then Score*0.6
			Else Score
  		END

3.Group By 聚合函數(shù)中使用Case表達式

針對分數(shù)表統(tǒng)計出學生各學科成績,

如下表:PersonId為學號,Subject:1為語文,2為數(shù)學,3為英語。

 SELECT PersonId,
		SUM(CASE WHEN Subject=1 THEN Score ELSE 0 END) AS '語文',
		SUM(CASE WHEN Subject=2 THEN Score ELSE 0 END) AS '數(shù)學',
		SUM(CASE WHEN Subject=3 THEN Score ELSE 0 END) AS '英語'
	From Score
 Group By PersonId

實現(xiàn)結(jié)果:

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

儋州市| 惠东县| 荆州市| 新巴尔虎左旗| 互助| 阿拉善左旗| 三江| 庆元县| 安塞县| 凌源市| 商城县| 黔江区| 喀什市| 华阴市| 图片| 邹城市| 射洪县| 苗栗市| 西和县| 托里县| 娱乐| 宝坻区| 梁河县| 乃东县| 茌平县| 三明市| 连城县| 赣榆县| 共和县| 易门县| 宁南县| 龙南县| 元江| 柳州市| 乡宁县| 古蔺县| 白山市| 波密县| 沁阳市| 伽师县| 池州市|