文章目錄
一、函數的作用
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;