文章目录
一、函数的作用
1、方便数据的统计
2、处理查询结果
二、函数的分类
(一)数值函数
1、四舍五入
ROUND(n[,m])
n表示要进行四舍五入的值
m表示保留小数点后几位或前几位
省略m:0 m>0:
小数点后m位 m<0:
小数点前m位
select round(23.4),round(23.45,1),round(23.45,-1) from dual;
2、取整函数
CEIL(n)
FLOOR(n)
select ceil(23.45),floor(23.45) from dual;
3、常用计算
(1)
ABS(n)
select abs(23.45),abs(-23),abs(0) from dual;
(2)
MOD(m,n)
如果m和n中有一个值为null值,则结果返回null值
select mod(5,2),mod(5,null),mod(-5,2),mod(5,-2) from dual;
(3)
POWER(m,n)
POWER(m,n)
表示返回m的n次幂
select power(2,3),power(null,2) from dual;
(4)
SQRT(n)
select sqrt(16) from dual;
4、三角函数
SIN(n)、ASIN(n)
COS(n)、ACOS(n)
TAN(n)、ATAN(n)
n表示弧度
select sin(3.124) from dual;
(二)字符函数
1、大小写转换函数
UPPER(char)
LOWER(char)
INITCAP(char)
大小写转换函数的用途:注册用户名(不区分大小写)
select upper('abcd'),lower('ABCD'),initcap('abcd') from dual;
2、获取子字符串函数
SUBSTR(char,[m[,n]])
char 源字符串
m 获取子串的开始位置,m为0, 表示从字符串的首字母开始截取;m为负数,表示从字符串的尾部开始截取
n 截取子串的位数,n可以省略,当n省略时表示从m的位置截取到字符串末尾
select substr('abcde',2.3),substr('abcde',2),substr('abcde',-2,1) from dual;
3、获取字符串长度函数
LENGTH(char)
select length('abcde') from dual;
select length('abcde ') from dual;
4、字符串连接函数
CONCAT(char1, char2)
与||操作符的作用一样
select concat('abc','de') from dual;
select 'sbc'||'de' from dual;
5、去除子串函数
(1)
TRIM(c2 FROM c1)
该函数表示从字符串c1中去除字符c2
select trim('a' from 'abcde') from dual;
select trim('a' from 'abcda') from dual;
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200612111004680.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h5aDE3ODA4NzcwODk5,size_16,color_FFFFFF,t_70 =40)
(2)
LTRIM(c1[,c2])
select ltrim('ababaa','a') from dual;
(3)
RTRIM(c1[,c2])
select rtrim('ababaa','a') from dual;
(4)
TRIM(c1) 、 LTRIM(c1) 、 RTRIM(c1)
TRIM(c1)表示去除字符c1首尾空格;
LTRIM(c1)表示去除字符c1首部空格;
RTRIM(c1)表示去除字符c1尾部空格;
select trim(' abc ') from dual;
select ltrim(' abc ') from dual;
select rtrim(' abc ') from dual;
6、替换函数
REPLACE(char,s_string[,r_string])
省略r_string用空格替换
select replace('abcde','a','A') from dual;
select replace('abcde','a') from dual;
select replace('abcde','ab','A') from dual;
(三)日期函数
1、系统时间
SYSDATE
默认格式:DD-MON-RR
select sysdate from dual;
2、日期操作
(1)
ADD_MONTHS(date, i)
函数的作用是返回在指定日期上添加的月份,
如果i是负数,则相当于为原日期减去月份
select add_months(sysdate,4),add_months(sysdate,-4) from dual;
(2)
NEXT_DAY(date, char)
函数的作用是:
如果char的值是‘星期一’,则返回date指定日期的下周一是哪天
select next_day(sysdate,'星期一') from dual;
(3)
LAST_DAY(date)
select last_day(sysdate) from dual;
(4)
MONTH_BETWEEN(date1, date2)
函数的作用是:表示两个日期之间相隔的月份
select months_between('02-4月-20','10-1月-20') from dual;
(5)
EXTRACT(date FROM datetime)
select extract(year from sysdate) from dual;
select extract(month from sysdate) from dual;
select extract(day from sysdate) from dual;
select extract(hour from timestamp '2020-4-2 09:30:00') from dual;
(四)转换函数
1、日期转换成字符的函数
TO_CHAR(date[,fmt[,params]])
参数说明:
date:将要转换的日期
fmt:转换的格式
params:日期的语言
默认的格式:DD-MON-RR
fmt:YY YYYY YEAR
MM MONTH
DD DAY
HH24 HH12
MI SS
select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual;
2、字符转换成日期的函数
TO_DATE(char[,fmt[,params]])
params:用于指定日期的语言
注:to_date()按照系统默认格式显示器
select to_date('2020-04-2','YYYY-MM-DD') from dual;
3、数字转换成字符的函数
TO_CHAR(number[,fmt])
9:显示数字并忽略前面的0
0:显示数字,位数不足,用0补齐
.或D:显示小数点
,或G:显示千位符
$:美元符号
S:加正负号(前后都可以)
select to_char(12345.678,'$99,999.999') from dual;
select to_char(12345.678,'$99,999') from dual;
select to_char(12345.678,'S99,999') from dual;
4、字符转换成数字的函数
TO_NUMBER(char[,fmt])
fmt是转换的格式,可以省略
select to_number('$1,000','$9999') from dual;
三、在查询中使用函数
在这里需要导入一些表,下载地址:https://yuyunyaohui.lanzous.com/ivPKcdnlecd
导入方法:https://blog.csdn.net/hyh17808770899/article/details/106744978
1、在查询中使用字符函数
(1)在学生信息表查询出学生的生日
根据学生的身份证号码得到学生生日
select substr(studcardid,7,8) from student_infor;
(2)将部门编号01全部替换成‘计算机技术’
select replace(deptid,'01','计算机技术') from student_infor;
2、在查询中使用数值函数
将学生信息表中的年龄字段与10取余数
select mod(age,10) from student_infor;
3、在查询中使用日期函数
(1)取得学生入学的年份
select extract(year from regdate) from student_infor;
(2)查询出4月份入学的学生信息
select * from student_infor where extract(month from regdate)=4;