課程
/數據庫
/Oracle
/Oracle數據庫開發利器之函數
老師,你好 我想問下在oracle當中,函數的分類是什么樣的?以及具體包括什么函數呢?
2016-06-02
源自:Oracle數據庫開發利器之函數 1-1
正在回答
內置函數,也就是oracle給預先定義好的函數,可以由我們直接來使用。
自定義函數,是我們根據自己的需求自行編寫的函數,供我們使用
函數分類
內置函數:數值函數、字符函數、日期函數、轉換函數
1、數值函數
(1)、四舍五入
round(n,m)
省略m:默認為:0
m>0:小數點后m位
m<0:小數點前m位
注意:oracle中不能直接使用函數,必須包含一個目標表dual,即select 函數 from? dual;?? (dual作為目標表)
如:select round(23.4),round(23.45,1),round(23.45,-1) from dual;
結果:23 ?23.5 ?20
(2)、取整函數
ceil(n):--取最大值
floor(n):--取最小值
如:select ceil(23.45),floor(23.45) from dual;
結果:24 23
(3)、常用計算
1)取絕對值:abs(n)
如:select abs(23.45),abs(-23) from dual;
結果:23.45 23
2)取余數:mod(m,n)
如果m和n中有一個為null值,則結果為null
如:select mod(5,2),mod(5,null) from dual;
結果:1?
3)數值的n次冪:power(m,n)
如:23用power(2,3)表示,結果8
Select power(2,3),power(null,2) from dual;
結果:8、有null值,則結果也為null
4)平方根:sqrt(n)
如:Select sqrt(16),sqrt(null) from dual;
結果:4、有null值,則結果也為null
(4)、三角函數
sin(n) 、asin(n) 反正弦
cos(n)、acos(n) 反余弦
tan(n)、atan(n) 反真切
例:select sin(3.14159265359/6) from dual;
結果:0.5
2.字符函數
(1)、大小寫轉換函數 1)upper(chars):表示全部轉大寫
2)lower(chars):表示全部轉小寫
3)initcap(chars):表示把首字母大寫,后面的字符全部小寫
(2)、獲取子字符串函數
substr(char,[m,n]) m表示取子串的開始位置 n表示截取子串的位數
例:select substr('abcde',2,3) ,substr('abcde',2),substr('abcde',-2,1) from dual;
結果為: bcd bcde d
注意:m=0表示從首字母開始截取,n可以省略表示從m的位置截取到字符串末尾;
如果m=0且省略n那么結果仍為源字符串;
如果m為負數表示從字符串的尾部開始截取
select substr('abcdefg',-5,4) from dual;
結果:cdef
3、日期函數
1)、系統函數
sysdate
默認格式:DD-MON-RR(日月年)
如:Select sysdate from dual;
2)、日期操作
①add_months(date,i)
如:select add_months(sysdate,3),add_months(sysdate,-3) from dual;
結果:04-9月 -16???? ?04-3月 -16
②next_day(date,char)
如:select next_day(sysdate,'星期日') from dual;;
結果:顯示下一個的周日的日期 05-6月 -16
③last_day(date)
? 如:select last_day(sysdate) from dual;
? 結果:查看當月最后一天 30-6月 -16
④months——between(date1,date2)
? 如:select months_between(sysdate,'4-8月-16') from dual;
結果:查看兩個日期之間相隔的月份,返回值是小數? -2
PS:要獲取兩個日期相隔多少天,可以用兩個日期直接相減得到多少天。
⑤extract(date from datetime)--獲取時間戳
如:select extract(year from sysdate) from dual;(month或者day)
如果想得到時分秒,例子如下:(用timestamp)
select extract(hour from timestamp '2016-10-1? 9:56:4') from dual;
(minute或second)
? ? 4、轉換函數
? ? ?1)、日期轉換成字符的函數
to_char(date,fmt,params)
參數說明:
date:將要轉換的日期
fmt:轉換的格式
params:日期的語言
默認格式:DD-MON-RR(天月年)
YY YYYY YEAR(年)
MM MONTH(月)
DD ?DAY(天)
HH24 ?HH12(24、12制)
MI(分) SS(秒)
如:select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual;
結果:2016-06-04 10:03:50
2)、字符轉換成日期的函數
to_date(char,fmt,params)
params:用于指定日期的語言(一般不寫)
如:select to_date('2016-05-22','YYYY-MM-DD') from dual;
注意:to_date() 按照系統默認格式顯示日期
3)、數字轉換成字符的函數
to_char(number,fmt)
9:顯示數字并忽略前面的0
0:顯示數字,位數不足,用0補齊
.或D:顯示小數點
,或G:顯示千位符
$:美元符號
S:加正負號(前后都可以,但不可同時加)
如:select to_char(5123.456,'S$99,999.99')from dual;
結果:+$5,123.46
4)、字符轉換成數字的函數
to_number(char,fmt)
fmt是轉換的格式,可以省略
如:select to_number('$2,000','$9999') from dual;
結果:2000
舉報
常用函數應用,并且介紹了這些函數如何在查詢中應用
3 回答分析函數怎么用
1 回答Oracle的常用函數要求?
2 回答首字母大寫函數INITCAP(char)
1 回答首字母大寫函數INITCAP(char)
2 回答Oracle數據類型轉換
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2022-08-26
內置函數,也就是oracle給預先定義好的函數,可以由我們直接來使用。
自定義函數,是我們根據自己的需求自行編寫的函數,供我們使用
2016-06-04
函數分類
內置函數:數值函數、字符函數、日期函數、轉換函數
1、數值函數
(1)、四舍五入
round(n,m)
省略m:默認為:0
m>0:小數點后m位
m<0:小數點前m位
注意:oracle中不能直接使用函數,必須包含一個目標表dual,即select 函數 from? dual;?? (dual作為目標表)
如:select round(23.4),round(23.45,1),round(23.45,-1) from dual;
結果:23 ?23.5 ?20
(2)、取整函數
ceil(n):--取最大值
floor(n):--取最小值
如:select ceil(23.45),floor(23.45) from dual;
結果:24 23
(3)、常用計算
1)取絕對值:abs(n)
如:select abs(23.45),abs(-23) from dual;
結果:23.45 23
2)取余數:mod(m,n)
如果m和n中有一個為null值,則結果為null
如:select mod(5,2),mod(5,null) from dual;
結果:1?
3)數值的n次冪:power(m,n)
如:23用power(2,3)表示,結果8
Select power(2,3),power(null,2) from dual;
結果:8、有null值,則結果也為null
4)平方根:sqrt(n)
如:Select sqrt(16),sqrt(null) from dual;
結果:4、有null值,則結果也為null
(4)、三角函數
sin(n) 、asin(n) 反正弦
cos(n)、acos(n) 反余弦
tan(n)、atan(n) 反真切
例:select sin(3.14159265359/6) from dual;
結果:0.5
2.字符函數
(1)、大小寫轉換函數
1)upper(chars):表示全部轉大寫
2)lower(chars):表示全部轉小寫
3)initcap(chars):表示把首字母大寫,后面的字符全部小寫
(2)、獲取子字符串函數
substr(char,[m,n]) m表示取子串的開始位置 n表示截取子串的位數
例:select substr('abcde',2,3) ,substr('abcde',2),substr('abcde',-2,1) from dual;
結果為: bcd bcde d
注意:m=0表示從首字母開始截取,n可以省略表示從m的位置截取到字符串末尾;
如果m=0且省略n那么結果仍為源字符串;
如果m為負數表示從字符串的尾部開始截取
select substr('abcdefg',-5,4) from dual;
結果:cdef
3、日期函數
1)、系統函數
sysdate
默認格式:DD-MON-RR(日月年)
如:Select sysdate from dual;
2)、日期操作
①add_months(date,i)
如:select add_months(sysdate,3),add_months(sysdate,-3) from dual;
結果:04-9月 -16???? ?04-3月 -16
②next_day(date,char)
如:select next_day(sysdate,'星期日') from dual;;
結果:顯示下一個的周日的日期 05-6月 -16
③last_day(date)
? 如:select last_day(sysdate) from dual;
? 結果:查看當月最后一天 30-6月 -16
④months——between(date1,date2)
? 如:select months_between(sysdate,'4-8月-16') from dual;
結果:查看兩個日期之間相隔的月份,返回值是小數? -2
PS:要獲取兩個日期相隔多少天,可以用兩個日期直接相減得到多少天。
⑤extract(date from datetime)--獲取時間戳
如:select extract(year from sysdate) from dual;(month或者day)
如果想得到時分秒,例子如下:(用timestamp)
select extract(hour from timestamp '2016-10-1? 9:56:4') from dual;
(minute或second)
? ? 4、轉換函數
? ? ?1)、日期轉換成字符的函數
to_char(date,fmt,params)
參數說明:
date:將要轉換的日期
fmt:轉換的格式
params:日期的語言
默認格式:DD-MON-RR(天月年)
YY YYYY YEAR(年)
MM MONTH(月)
DD ?DAY(天)
HH24 ?HH12(24、12制)
MI(分) SS(秒)
如:select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual;
結果:2016-06-04 10:03:50
2)、字符轉換成日期的函數
to_date(char,fmt,params)
params:用于指定日期的語言(一般不寫)
如:select to_date('2016-05-22','YYYY-MM-DD') from dual;
注意:to_date() 按照系統默認格式顯示日期
3)、數字轉換成字符的函數
to_char(number,fmt)
9:顯示數字并忽略前面的0
0:顯示數字,位數不足,用0補齊
.或D:顯示小數點
,或G:顯示千位符
$:美元符號
S:加正負號(前后都可以,但不可同時加)
如:select to_char(5123.456,'S$99,999.99')from dual;
結果:+$5,123.46
4)、字符轉換成數字的函數
to_number(char,fmt)
fmt是轉換的格式,可以省略
如:select to_number('$2,000','$9999') from dual;
結果:2000