欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SQL Server Case表達(dá)式使用方式

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

SQL Server Case表達(dá)式

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

1.常用Select用法 

例如:

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

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

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

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

注意事項(xiàng):

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

2.Update中使用Case表達(dá)式

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

例如:

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

分?jǐn)?shù)表如下:

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

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

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表達(dá)式

針對分?jǐn)?shù)表統(tǒng)計(jì)出學(xué)生各學(xué)科成績,

如下表:PersonId為學(xué)號(hào),Subject:1為語文,2為數(shù)學(xué),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ù)學(xué)',
		SUM(CASE WHEN Subject=3 THEN Score ELSE 0 END) AS '英語'
	From Score
 Group By PersonId

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

總結(jié)

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

相關(guān)文章

最新評論