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后台开发者,热衷分享技术,心怀感恩,深耕不缀。" }