第9讲函数.doc-IIS7.doc

第9讲函数.doc-IIS7.doc

第9讲 函数 一、字符串函数 例:找出学院名称中含有“影”的所有学生的成绩数据。 SELECT * FROM scoreorigin WHERE deptname LIKE %影% 此例中LIKE %影%可以换成相应的字符串函数。 例1:从scoreorigin找出学院名称中含有“影”的所有学生。 SELECT * FROM scoreorigin WHERE position(影 in deptname)0 position(子串 in 母串)的值是,子串在母串中的起始位置, SELECT studno,studname,deptname,position(院 in deptname) FROM scoreorigin LIMIT 0,20 例2:从scoreorigin找出学院名称中前2个字为“新闻”的所有学生。 SELECT * FROM scoreorigin WHERE LEFT(deptname,2)=新闻 前一个字呢?前3个字呢?前5个字呢? 可将deptname换成char型的其他字段,如studno, studname,teachername,coursename. 不能是数值型字段,如testscore1是不可以的。 例3:从scoreorigin找出学院名称中最后4个字为“艺术学院”的所有学生。 SELECT * FROM scoreorigin WHERE RIGHT(deptname,4)=艺术学院 最后1个字呢?最后2个字呢?最后5个字呢? 可将deptname换成char型的其他字段,如studno, studname,teachername,coursename. 不能是数值型字段,如testscore1是不可以的。 为了“艺术”二个字,我们要取出最后4个字,能否直接取出指定位置的字呢? 例4:从scoreorigin找出学院名称中第8字起,连续2个字为“艺术”的所有学生。 SELECT * FROM scoreorigin WHERE SUBSTRING(deptname,8,2)=艺术 . 如果想找出“传播”二个字,那么这个语句要如何写? SELECT * FROM scoreorigin WHERE SUBSTRING(deptname,____,2)=传播 例5:测试每个人姓名的长度 SELECT studno,studname,LENGTH(studname), LENGTH(RTRIM(studname)), LENGTH(TRIM(studname)) FROM scoreorigin 相关练习:显示scoreorigin表中,每位同学所在学院的长度、课程的长度、老师姓名的长度。 例6 将score的记录显示成如下形式 SELECT studno,studname,CONCAT(studname,(,studno,)), CONCAT(teachername,(,coursename,)),testscore1 FROM scoreorigin 将多个字符串拼接成一个CONCAT(s1,s2,s3,...) 相关练习:将teachertable表中teacherno,teachername拼接一块,与score表的相关信息显示在一块,效果如下图所示。 SELECT score.studno,score.studname,score.deptname, score.teachername,CONCAT(teachertable.teachername,(,teachertable.teacherno,)), score.testscore1 FROM score JOIN teachertable on score.teachername=teachertable.teacherno 相关练习:将depttable表中deptno,deptname拼接一块,与score表的相关信息上图类似的效果。 相关练习:将coursetable表中courseno,coursename拼接一块,与score表的相关信息上图类似的效果。 二、数学函数 昨天上机时,大家对于“期中成绩与期中考试的平均成绩上下相差6分以内”感到很困惑, |a-b|=6 -6=a-b=6 a-b=6 AND a-b=-6 a-b=6 AND b-a=6 好多同学问,求绝对值的函数是有吗? 有,不建议大家使用,据说效率不高。 SELECT (select avg(middlescore) from scoreorigin),scoreorigin.* FROM scoreorigin WHERE middlescore-(select avg(middlescore) from sc

文档评论(0)

1亿VIP精品文档

相关文档