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; 

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章