Oracle数据库教学中常见函数的应用

2019-11-11 13:14蔡小艳崔艳萍孟宪宇阎知知
电脑知识与技术 2019年27期

蔡小艳 崔艳萍 孟宪宇 阎知知

摘要:針对学生对Oracle函数学习、理解较难的状况,笔者结合士兵表,灵活应用Oracle的内置函数完成了各种士兵信息的查询,通过实例深入浅出地介绍了常用内置函数的作用与功能。

关键词:Oracle数据库;字符函数;数字函数;转换函数

中图分类号:TP311 文献标识码:A

文章编号:1009-3044(2019)27-0122-02

Oracle数据库系统提供了许多内置函数,按照操作的数据行数可以分为单行函数和聚合函数;按照操作的数据类型和功能又可以分为字符函数、数字函数、日期函数、聚合函数和转换函数等。本文主要介绍在Oracle数据库教学中常用的几类函数。

1字符函数

1.1 substr(string,Start,length)

函数substr(string,start,length)的功能是返回string中的一个子字符串,这个子字符串从start处开始,取length个字符。

例1:从士兵表中统计各个省份的士兵人数。

分析:籍贯字段中包含了省、市或县的信息,如果按省份来统计士兵的人数,则需要使用substr()函数提取籍贯字段中的省份信息。

selectsubstr(籍贯,1,3)省份,count(*)士兵人数

from士兵表

groupbysubstr(籍贯,1,3);

1.2 concat(stringl,string2)

函数concat(stringl,string2)的功能是连接stringl和string2两个字符串。

例2:根据直招士官的士兵登记表号生成其士兵证号。

分析:直招士官的士兵证号编码规则为在士兵登记表号前加缀“士字第”,在士兵登记表号末位加缀1位大写英文字母“z”。士兵表中每位士兵的士兵登记表号已录入,生成士兵证号则需要嵌套使用concat()函数,分别给士兵登记表号添加前缀和后缀。

update士兵表

set士兵证号=concat(concat('士字第,士兵登记表号),z号)

where士官来源=直招士官;

2日期时间函数

sysdate

函数sysdate的功能是返回当前系统的日期时间。

在Oracle数据库的教学中,主要使用sysdate函数配合出生年月、入伍年月来计算士兵的年龄、兵龄等信息。

3数字函数

3.1 trtmc(x,[y])

函数trunc(x,[y])的功能是对x进行截取,y为可选参数,说明对x截取到第几位小数。如果没有指定v或者v为0,则对x进行取整;如果y大于0,则截取x至小数点右边的第y位;如果y小于0,则对x小数点左边指定v位的部分置0,小数被去掉。

例3:查询年龄在18到20之间的士兵姓名、性别、籍贯和年龄。

分析:士兵表中有出生年月字段,没有年龄字段。在查询士兵年龄时,需要借助Oracle的日期时间函数sysdate和出生年月字段来计算年龄。

select姓名,性别,籍贯,trunc((sysdate-出生年月)/365,0)年龄from士兵表

where trunc((sysdate-出生年月)/365,0)between18and20;

3.2 round(x,[y])

函数round(x,【y】)的功能是按照参数y对x进行四舍五入截取。如果没有指定y或者y为0,则对x进行四舍五入并取整;如果y大于0,则截取x至小数点右边的第y位并四舍五入;如果y小于0,则对x小数点左边指定v位的部分置0,小数被去掉。

例4:查询军衔为下士并且下士服役即将满3年的士兵。

分析:士兵表中有军衔时间字段,没有服役年限字段。在查询服役时间时,需要借助Oracle的日期时间函数sysdate和军衔时间字段来计算服役年限。

select*

from士兵表

where军衔=下士'and round(、(sysdate-军衔时间)/365,0)=3;

4转换函数

4.1to_date(x,[format])

函数to_date(x,[formall)的功能是按照format格式,将字符串x转化为日期时间数据。如果省略了format格式,则默认的日

期时间格式是DD-MM-YY。