Oracle数据库知识整理----函数基础

一、函数的作用

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; 

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/hyh17808770899/article/details/106626755
今日推荐