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