ITPub博客

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

自动化办公案例:如何自动生成期数据?

原创 数据库开发技术 作者:猴子数据分析 时间:2022-07-28 20:00:00 0 删除 编辑


【面试题】


有一张“学生学期信息表”,包含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操作符的了解。



 ⬇️点击「阅读原文」

 免费报名 数据分析训练营

原文作者:猴子数据分析;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2017-01-16

  • 博文量
    865
  • 访问量
    345512