本栏目责任编辑:王力
计算机教学与教育信息化
Oracle 数据库教学中常见函数的应用
蔡小艳,崔艳萍,孟宪宇,阎知知
(陆军工程大学军械士官学校,湖北武汉430075)
摘要:针对学生对Oracle 函数学习、理解较难的状况,笔者结合士兵表,灵活应用Oracle 的内置函数完成了各种士兵信息的
查询,通过实例深入浅出地介绍了常用内置函数的作用与功能。关键词:Oracle 数据库;字符函数;数字函数;转换函数中图分类号:TP311
文献标识码:A
文章编号:1009-3044(2019)27-0122-02
开放科学(资源服务)标识码(OSID ):
Oracle 数据库系统提供了许多内置函数,按照操作的数据行数可以分为单行函数和聚合函数;按照操作的数据类型和功能又可以分为字符函数、数字函数、日期函数、聚合函数和转换
函数等[1]
。本文主要介绍在Oracle 数据库教学中常用的几类函数。
1字符函数
1.1substr(string,start,length)
函数substr(string,start,length)的功能是返回string 中的一个
子字符串,这个子字符串从start 处开始,取length 个字符。
例1:从士兵表中统计各个省份的士兵人数。分析:籍贯字段中包含了省、市或县的信息,如果按省份来统计士兵的人数,则需要使用substr()函数提取籍贯字段中的省份信息。
selectsubstr(籍贯,1,3)省份,count(*)士兵人数from 士兵表
groupbysubstr(籍贯,1,3);1.2concat(string1,string2)
函数concat(string1,string2)的功能是连接string1和string2两个字符串。
例2:根据直招士官的士兵登记表号生成其士兵证号。分析:直招士官的士兵证号编码规则为在士兵登记表号前加缀“士字第”,在士兵登记表号末位加缀1位大写英文字母“Z ”。士兵表中每位士兵的士兵登记表号已录入,生成士兵证号则需要嵌套使用concat()函数,分别给士兵登记表号添加前缀和后缀。
orcl 中trunc函数的使用方法update 士兵表
set 士兵证号=concat(concat('士字第',士兵登记表号),'Z 号')
where 士官来源='直招士官';
2日期时间函数
sysdate
函数sysdate 的功能是返回当前系统的日期时间。
在Oracle 数据库的教学中,主要使用sysdate 函数配合出生年月、入伍年月来计算士兵的年龄、兵龄等
信息。
3数字函数
3.1trunc(x,[y])
函数trunc(x,[y])的功能是对x 进行截取,y 为可选参数,说明对x 截取到第几位小数。如果没有指定y 或者y 为0,则对x 进行取整;如果y 大于0,则截取x 至小数点右边的第y 位;如果y 小于0,则对x 小数点左边指定|y|位的部分置0,小数被去掉。
例3:查询年龄在18到20之间的士兵姓名、性别、籍贯和年龄。
分析:士兵表中有出生年月字段,没有年龄字段。在查询士兵年龄时,需要借助Oracle 的日期时间函数sysdate 和出生年月字段来计算年龄。
select 姓名,性别,籍贯,trunc((sysdate-出生年月)/365,0)年龄from 士兵表
where trunc((sysdate-出生年月)/365,0)between18and20;3.2round(x,[y])
函数round(x,[y])的功能是按照参数y 对x 进行四舍五入截取。如果没有指定y 或者y 为0,则对x 进行四
舍五入并取整;如果y 大于0,则截取x 至小数点右边的第y 位并四舍五入;如果y 小于0,则对x 小数点左边指定|y|位的部分置0,小数被去掉。
例4:查询军衔为下士并且下士服役即将满3年的士兵。分析:士兵表中有军衔时间字段,没有服役年限字段。在查询服役时间时,需要借助Oracle 的日期时间函数sysdate 和军衔时间字段来计算服役年限。
select*from 士兵表
where 军衔='下士'and round((sysdate-军衔时间)/365,0)=3;
4转换函数
4.1to_date(x,[format])
函数to_date(x,[format])的功能是按照format 格式,将字符串
收稿日期:2019-05-30
作者简介:蔡小艳(1984—),女,副教授,硕士,主要研究方向:计算机网络、信息化等。
122
计算机教学与教育信息化
本栏目责任编辑:王
力
Computer Knowledge and Technology 电脑知识与技术
第15卷第27期(2019年9月)
x 转化为日期时间数据。如果省略了format 格式,则默认的日期时间格式是DD-MM-YY 。
例5:从士兵表中查询2018年9月入伍的士兵信息。分析:在Oracle 数据库中查询日期时间型数据时,可以使用以下三种方式:
(1)使用转换函数:to_date('2018-9-1','yyyy-mm-dd')(2)使用日期常量:date'2018-9-1'(3)使用符合当前系统日期时间格式的字符串:'1-9-月-2018'
使用转换函数书写的查询语句如下:select*from 士兵表
where 入伍年月=to_date('2018-9-1','yyyy-mm-dd');
说明:上述查询语句中的查询条件还可以书写成where 入伍年月=date'2018-9-1'或者where 入伍年月='1-9-月-2018'。4.2to_char(x,[format])
函数to_char(x,[format])的功能是按照format 格式,将数字或
日期时间类型的数据x 转换成字符串[2]
。
例6:从士兵表中统计2018年入伍的士兵人数。分析:目前入伍的月份包括9月和12月,如果统计人数时直接按照入伍年月分组,查询的结果如图1所示,2018年9月和12月入伍的人数分行统计。如果希望查询结果按照年份来分组,则需要使用to_char(入伍年月,'YYYY')函数筛选2018年入伍的士兵并按年份分组,查询结果如图2
所示。
图1
按入伍年月分组
图2按入伍年份分组
select to_char(入伍年月,'YYYY'),count(*)士兵人数from 士兵表
where to_char(入伍年月,'yyyy')=2018groupby to_char(入伍年月,'YYYY');
参考文献:
[1]徐飞,苗凤君.Orale 数据库基础与案例开发详解[M].北京:清华大学出版社,2016:126-139
[2]屈武江.Oracle 数据库应用技术项目化教程[M].辽宁:大连理工大学出版社,2014:74-77.
【通联编辑:唐一东】
(上接第115页)
4结束语
工程教育专业认证标准为实施OBE 人才培养提供了一个
框架,各专业结合自身办学条件,遵循框架要求,即可逐步设计出符合自身特点的OBE 人才培养模式,且事半功倍。OBE 人才培养模式能否实现,则取决于各环节能否全部落实。
参考文献:
[1]李志义.解析工程教育专业认证的成果导向理念[J].中国高
等教育,2014(17):7-10.
[2]李志义.解析工程教育专业认证的学生中心理念[J].中国高等教育,2014(21):19-22.
[3]李志义.解析工程教育专业认证的持续改进理念[J].中国高等教育,2015(Z3):33-35.
[4]顾佩华,胡文龙,林鹏,等.基于“学习产出”(OBE)的工程教育模式——汕头大学的实践与探索[J].高等工程教育研究,2014(1):27-37.
【通联编辑:王力】
123
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论