1.函數的作用
1).在查詢中使用函數(將小寫字母轉換成大寫字母,查詢時間間隔,四捨五入)
eg: select substr(cardid,7,8) from users; 在員工信息表查詢出員工的生日select replace(deptno,'01','信息技術') from users; 將部門號01全部替換成信息技術
select mod(age,10) from users; 將員工信息表中的年齡字段與10取餘數
select extract(year from regdate) from users; 取得員工入職的年份
select * from extract(month from regdate)=5;查詢出5月份入職的員工信息
2).方便數據的統計
3).處理查詢結果
2.函數的分類(數值函數,字符函數,日期函數,轉換函數)
1).數值函數(四捨五入,取整函數,常用計算,三角函數)
(1).四捨五入:
ROUN0D(n[,m])(此函數要結合dual表使用)省略m:0,m>0:小數點後m位,m<0:小數點前m位
n表示要進行四捨五入的值,m表示保留小數點後幾位或前幾位
eg:select round(23.4),round(23.45,1),round(23.45,-1) from dual;
(2).取整函數:
向上取整CEIL();向下取整FLOOR();
eg:select ceil(23.45),floor(23.45) from dual;
(3).常用計算:
取絕對值ABS();eg:select abs(23.45),abs(-23),abs(0) from dual;
取餘數MOD(m,n);(m爲被除數,n爲除數,如果m和n中有一個值爲null值,則結果返回null值)
eg:select mod(5,2) from dual;
冪次函數POWER(m,n);(表示返回m的n次冪)
eg: select power(2,3),power(null,2) from dual;
平方根函數SQRT(n);
eg: select sqrt(16) from dual;
(4).三角函數:
正弦函數SIN(n);(n是弧度)eg:select sin(3.124) from dual;
反正弦函數ASIN(n);
餘弦函數COS(n);
反餘弦函數ASOS(n);
正切函數TAN(n);
反正切函數ATAN(n);
2).字符函數(大小寫轉換函數,獲取子字符串函數,獲取字符串長度函數,字符串連接函數,去除子串函數,替換函數)
(1).大小寫轉換函數:
轉換成大寫函數UPPER(char);轉換成小寫函數LOWER(char);
首字母大寫函數INITCAP(char);
eg: select upper('abde'),lower('ADe'),initcap('asd') fromdual;
(2).獲取子字符串函數:
SUBSTR(char,[m[,n]]);(char指源字符串,m指取子串的開始位置,m取0表示從開頭開始,m爲負數表示從字符串的尾部開始截取,n表示截取子串的位數,n可以省略,省略時表示截取到最後)eg: select substr('abcde',2,3),substr('abcde',2),substr('abcde',-2,1) from dual;
(3).獲取字符串長度函數:
LENGTH(char);eg: select length('acd ') from dual;
(4).字符串連接函數:
CONCAT(char1,char2);(與||操作符的作用一樣)eg: select concat ('ab','cd') from dual;
select 'ab'||'cd' from dual;
(5).去除子串函數:
TRIM(c2 FROM c1);(該函數表示從字符串c1兩端中去除字符c2)eg: select trim('a' from 'abcde') from dual;
LTRIM(c1[,c2]);(從字符串c1左端中去除字符c2)
eg: select ltrim('ababaa','a') from dual;
RTRIM(c1[,c2]);(從字符串c1右端中去除字符c2)
eg: select rtrim('ababaa','a') from dual;
注意:參數只有一個代表去除空格。
(6).替換函數:
REPLACE(char,s_string[,r_string]);(char爲源字符串,s_string爲替換前字符串,r_string爲替換後字符串,省略r_string用空格替換)eg: select replace ('abcde','a','A') from dual;
3).日期函數(系統時間,日期操作)
(1).系統時間
SYSDATE默認格式:DD-MON-RR(日月年)
eg: select sysdate from dual;
(2).日期操作
ADD_MONTHS(date,i);(函數的作用是返回在指定日期上添加的月份,即在當前日期加上i個月,i可以是任何整數;如果i是小數,系統會自動截取整數部分;如果是負數就是在當前日期減去i個月。)eg: select add_months(sysdate,3),add_months(sysdate,-3) fromdual;
NEXT_DAY(date,char);(如果char的值是‘星期一’,則返回date指定日期的下週一是哪天,char可以爲中文或英文)
eg: select next_day(sysdate,'星期一') from dual;
LAST_DAY(date);(返回所在月的最後一天是幾號)
eg: select last_day(sysdate) from dual;
MONTH_BETWEEN(date1,date2);(表示兩個日期之間相隔的月份)
eg: select months_between('20-5月-15','10-1月-15') from dual;
EXTRACT(date FROM datetime);(從指定日期返回需要的年月日信息,date用year,month,day替換)
eg: select extract(year from sysdate) from dual;
時間戳timestamp的示例:
eg:select extract(hour from timestamp ‘2015-10-1 17:25:13’) from dual;
4).轉換函數(日期轉換成字符的函數,字符裝換成日期的函數,數字轉換成字符的函數,字符轉換成數字的函數)
(1).日期轉換成字符的函數
TO_CHAR(data[,fmt[,params]]);(date:將要轉換的日期,fmt轉換的格式,params:日期的語言,fmt的取值:年[YY/YYYY/YEAR],月[MM/MONTH],日[DD/DAY],時[HH12/HH24],分[MI],秒[SS])eg: select to_char(sysdate,'YY-MM-DD HH24:MI:SS') from dual;
(2).字符裝換成日期的函數
TO_DATE(char[,fmt[,params]]);(注意:結果按照系統默認格式顯示日期)eg: select to_date('2015-05-22','YYYY-MM-DD') from dual;
(3).數字轉換成字符的函數
TO_CHAR(number[,fmt]);(9:顯示數字並忽略前面的0,0:顯示數字,位數不足,用0補齊,.或D:顯示小數點,,或G:顯示千位符,$:美元符號,S:加正負號(前後都可以))eg: select to_char(12345.678,'$99,999.999') from dual;
(4).字符轉換成數字的函數
TO_NUMBER(char[,fmt]);(fmt是轉換的格式,可以省略)eg: select to_number('$1,000','$9999') from dual;