case when then else end
能夠理解爲流程控制語句或條件控制語句。能夠實現資料獲取的時候,能夠更多的條件和自定義邏輯。case when then else end
做爲數據庫查詢入門必掌握的技能。
對已知的數據庫中數據,按照本身的邏輯,進行自定義分組和數據分析
首先SD_GSS
表中數據以下javascript
YYEAR | NO |
---|---|
1992 | 2 |
1992 | 3 |
1992 | 4 |
2017 | 5 |
2017 | 6 |
2017 | 7 |
SELECT CASE YYEAR WHEN '1992' THEN '生日年' ELSE '新年' END YYEAR FROM SD_GSS
結果以下
java
YYEAR |
---|
生日年 |
生日年 |
生日年 |
新年 |
新年 |
新年 |
用此條件控制語句,實現自定義條件分組git
SELECT CASE YYEAR WHEN '1992' THEN '生日年' ELSE '新年' END DATED,NO FROM SD_GSS
END
結尾時,自定義欄位,其他部門和上述SQL
一致
github
DATED | NO |
---|---|
生日年 | 2 |
生日年 | 3 |
生日年 | 4 |
新年 | 5 |
新年 | 6 |
新年 | 7 |
條件控制語句中嵌套函數達到理想的計算效果sql
SELECT CASE YYEAR WHEN '1992' THEN ROUND(YYEAR/9,5) ELSE YYEAR+100 END DATED,NO FROM SD_GSS
上面SQL
意思是,1992年,讓此主鍵除9,除不盡,用ROUND
函數,小數點後保留5位,不然加100
數據庫
DATED | NO |
---|---|
221.33333 | 2 |
221.33333 | 3 |
221.33333 | 4 |
2117 | 5 |
2117 | 6 |
2117 | 7 |
不少人拿面相對象語言和建築作對比,C
語言是基礎,是面嚮對象語言基礎。拿C
語言中的if..else..
來對比case when then else end
函數
if(YYEAR=='1992') { YYEAR=YYEAR/9.0; } else { YYEAR=YYEAR+100; }
if..else if...else if...else
來類比case when then else end
,結果可能不一致,可是思想大體一致,能夠幫助你,快速理解if(YYEAR=='1992') { YYEAR=YYEAR/9.0; } else if(YYEAR=='2017') { YYEAR=YYEAR+100; } else { YYEAR=YYEAR+100; }
Function
和Procesure
中都會有用到流程控制語句SQL
都會用到Function
和Procesure
包括書寫規範,注意事項和調試(Debug
)。星星之火能夠燎原,今日點滴的付出,是往後的苦盡甘來。莫愁前路漫漫,天下誰人不識君。感謝你閱讀此文稿,也但願你能不吝賜教。推薦比較全面的我的學習網站,但願對你有幫助。學習
var normalChild = { nickName : "墨客碼", site : "http://www.cnblogs.com/gss0525/" descTarget : ".net後臺開發者,熱衷分享技術,心懷感恩,深耕不綴。" }