首页 > 数据库 > 数据库开发技术 > 自动化办公案例:如何自动生成期数据?

【面试题】
有一张“学生学期信息表”,包含4个字段:学生id、学生姓名、学期、班级名称。

【问题】目前只有高一上学期的信息,需要自动填充完剩余学期的信息。
1)学生在升学的过程中不换班,例如:高一念了1班后,高二高三也是1班;
2)2013-2014-1 代表上学期,2013-2014-2 代表下学期。
【解题步骤】
1. 问题分析
学生的学期信息规律性很强,根据已有的一条数据,我们很容易写出“张三”高中剩余五个学期对应的信息。
那么,如何根据高一上学期的信息,在MySQL中自动生成剩余学期的信息?
我们只要使用几种字符串函数,以及UNION操作符即可。
2. 函数介绍
1)字符串替换函数REPLACE:
REPLACE(字符串,被替换字符串,替换字符串)该函数可以解释为:在“字符串”中出现的“被替换字符串”均被“替换字符串”替换,然后返回替换后的字符串。
2)UNION操作符:
MySQL的UNION操作符用于连接两个及以上的SELECT语句的结果组合到一个结果集合中,同时会删除重复的数据。而使用UNION ALL则不会删除重复数据。

3. 获取结果
1)高一上学期:
select *from 学生学期信息表;
返回结果为:

2)高一下学期:
由于直接替换“1”会将所有“1”换掉,所以我们将“2013-2014-1”中的“-1”替换成“-2”。
select *from 学生学期信息表unionselect 学生id,学生姓名,REPLACE(学期,'-1','-2') as 学期,班级名称from 学生学期信息表;
返回结果为:

3)高二上学期:
替换年份时,如果先将“2013”换成“2014”,再去替换“2014”时,会将两个“2014”都替换掉,所以我们先将“2014”替换成“2015”。
select *from 学生学期信息表unionselect 学生id,学生姓名,REPLACE(学期,'-1','-2') as 学期,班级名称from 学生学期信息表unionselect 学生id,学生姓名,REPLACE(REPLACE(学期,'2014','2015'),'2013','2014') as 学期,REPLACE(班级名称,'一','二') as 班级名称from 学生学期信息表;
返回结果为:

3)高二下学期:
在“高二上学期”的基础上,将“-1”替换成“-2”。
select *from 学生学期信息表unionselect 学生id,学生姓名,REPLACE(学期,'-1','-2') as 学期,班级名称from 学生学期信息表unionselect 学生id,学生姓名,REPLACE(REPLACE(学期,'2014','2015'),'2013','2014') as 学期,REPLACE(班级名称,'一','二') as 班级名称from 学生学期信息表unionselect 学生id,学生姓名,REPLACE(REPLACE(REPLACE(学期,'2014','2015'),'2013','2014'),'-1','-2') as 学期,REPLACE(班级名称,'一','二') as 班级名称from 学生学期信息表;
返回结果为:

4)高三上&下学期:
按照以上方法,最后汇总高三学期信息。
select *from 学生学期信息表unionselect 学生id,学生姓名,REPLACE(学期,'-1','-2') as 学期,班级名称from 学生学期信息表unionselect 学生id,学生姓名,REPLACE(REPLACE(学期,'2014','2015'),'2013','2014') as 学期,REPLACE(班级名称,'一','二') as 班级名称from 学生学期信息表unionselect 学生id,学生姓名,REPLACE(REPLACE(REPLACE(学期,'2014','2015'),'2013','2014'),'-1','-2') as 学期,REPLACE(班级名称,'一','二') as 班级名称from 学生学期信息表unionselect 学生id,学生姓名,REPLACE(REPLACE(学期,'2014','2016'),'2013','2015') as 学期,REPLACE(班级名称,'一','三') as 班级名称from 学生学期信息表unionselect 学生id,学生姓名,REPLACE(REPLACE(REPLACE(学期,'2014','2016'),'2013','2015'),'-1','-2') as 学期,REPLACE(班级名称,'一','三') as 班级名称from 学生学期信息表;
返回结果为:

【本题考点】
1)考查对字符串函数的了解;
2)考查对UNION操作符的了解。


⬇️点击「阅读原文」
免费报名 数据分析训练营
原文作者:猴子数据分析;如有侵权,请联系管理员删除。