Oracle學習筆記(6)——函數
函數的作用 方便數據的統計 處理查詢結果 函數的分類 Oracle內置的系統函數 數值函數 四捨五入 ROUND(n[,m]) 1、n:表示要進行四捨五入的值 2、m:表示保留小數點後幾位或前幾位 3、省略m : 0 4、m > 0:小數點後m位 5、m < 0:小數點前m位 例子:select round(23.4),round(23.45,1),round(23.45,-1) from dual;
取整函數 取最大值:CEIL(n) 取最小值:FLOOR(n) 例子:select ceil(23.45),floor(23.45) from dual;
常用計算 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) from dual; select mod(5,null) from dual;
3、POWER(m,n):表示返回m的n次冪 select power(2,3),power(null,2) from dual; 4、求平方根:SQRT(m) select sqrt(16) from dual;
三角函數 1、正弦:SIN(n)、反正弦:ASIN(n) n表示弧度 2、余弦:COS(n)、反余弦:ACOS(n) n表示弧度 3、正切:TAN(n)、反正切:ATAN(n) n表示弧度 select sin(3.124) from dual;
字符函數 大小寫轉換函數 UPPER(char):轉大寫 LOWER(char):轉小寫 INITCAP(char):首字母轉大寫 例子: select upper('abde'),lower('ADe'),initcap('asd') from dual; 獲取子字符串函數 SUBSTR(char,[m[,n]]) 說明:char:源字符串,m:取子串的開始位置,n:截取子串的位數 n可以省略,當n省略時表示從m的位置截取到字符串的末尾 m為0,表示從字符串的首字母開始截取 m為負數,表示從字符串的尾部開始截取 select substr('abcde',2,3),substr("abcde",2),substr('abcde',-2,1) from dual;
獲取字符串長度函數 LENGTH(char): select length('acd ') from dual; 字符串連接函數 CONCAT(char1,char2) 與 || 操作符的作用一樣 select concat('ab','cd') from dual; select 'ab' || 'cd' from dual;
去除子串函數 1、 TRIM(c2 FROM c1):該函數表示從字符串c1中去除字符c2 select trim('a' from 'abcde') from dual; 2、LTRIM(c1[,c2]): select ltrim('ababaa','a') from dual; 3、RTRIM(c1[,c3]): select rtrim('ababaa','a') from dual; 4、TRIM(c1):取除首尾的空格
替除函數 1、REPLACE(char,s_string[,r_string]) : 省略r_string用空格替換 例子:select replace('abced','a','A') from dual; select replace('abced','a') from dual; select replace('abced','ab','A') from dual;
日期函數 系統時間 SYSDATE 默認格式:DD-MON-RR select sysdate from dual;
日期操作 ADD_MONTHS(date,i):返回在指定日期上添加的月份。i可以是任何整數。如果i的小數,會自動截取整數。 如果i是負數,則相當於為原日期減去月份。 select add_months(sysdate,3),add_months(sysdate,-3) from dual; NEXT_DAY(date,char):如果char的值是'星期一',則返回date指定日期的下周一是那天 select next_day(sysdate,'星期一') from dual; LAST_DAY(date):返回某一月的最後一天的日期 select last_day(sysdate) from dual; MONTHS_BETWEEN(date1,date2):表示兩個日期之間相隔的月份 select months_between('20_5月_15','10_1月_15') from dual;
EXTRACT(date FROM datetime): select extract(year from sysdate) from dual; select extract(month from sysdate) from dual; select extract(date from sysdate) from dual;
select extract(hour from timestamp '2015-10-1 17:25:14') from dual;
轉換函數 日期轉換成字符的函數 TO_CHAR(date[,fmt[,params]]) 參數說明: date:將要轉換的日期 fmt:轉換的格式 params:日期的語言。通常不寫 默認格式:DD-MON-RR YY YYYY YEAR MM MONTH DD DAY HH24 HH12 MI SS 例子:select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual; select to_char(sysdate,'YYYY-MM-DD HH12:MI:SS') from dual;
字符轉換成日期的函數 TO_DATE(char[,fmt[,params]]) 注意:to_date()按照系統默認格式顯示日期 例子:select to_date('2015-05-22','YYYY-MM-DD') from dual;
數字轉換成字符的函數 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,999') from dual; select to_char(12345.678,'S99,999.999') from dual;
字符轉換成數字的函數 TO_NUMBER(char[,fmt]) fmt是轉換的格式,可以省略 select to_number('$1,000','$9999') from dual;
自定義的函數(暫時不學) 在查詢中使用函數 在查詢中使用字符函數 1、在員工信息表查詢出員工的生日(也就是根據員工省份證號碼得到員工生日) select substr(cardid,7,8) from users; 2、將部門號01全部替換成'信息技術' select replace(deptno,'01','信息技術') from users; 3、將員工信息表中的年齡字段與10取余數 select mod(age,10) from users;
在查詢中使用日期函數 1、取得員工入職的年份 select extract(year from regdate) from users; 2、查詢出5月份入職的員工信息 select * from users where extract(month from regdate)=5;