oracle數據庫內置函數之數值函數、字符函數、日期函數、轉換函數及其在查詢語句中的運用
數值函數:
1、四捨五入函數round() from dual:一行一列組成
select round(23.4) from dual;--默認不寫m表示m為0
select round(23.45,1) from dual;--1表示保留小數點後一位,那麼是小數點的第二位四捨五入
select round(23.45,-1) from dual;---1表示小數點前一位四捨五入取整,前一位是3四捨五入為20
2、取整函數:
select ceil(23.45),floor(23.45) from dual;
3、常用計算:
abs(n)絕對值函數:
select abs(23.45),abs(-23),abs(0) from dual;
mod(m,n):取余函數,如果m和n中有一個值為null值,則結果返回null值
select mod(5,2) from dual;
select mod(5,null) from dual;
power(m,n):表示返回m的n次冪
select power(2,3),power(null,2) from dual;
sqrt(n):求平方根的函數
select sqrt(16) from dual;
4、三角函數:
sin(n),asin(n):n代表弧度
select sin(3.14) from dual;
cos(n),acos(n);
字符函數:
1、大小寫轉換函數:upper(char),lower(char),initcap(char),把首字母轉為大寫
select upper('abcde'),lower('ADe'),initcap('asd') from dual;
2、獲取子字符串函數:substr(char,[m[n]]),n如果省略代表從m截取到字符串的末尾
m為0表示從字符串的首字母開始截取
m為負數表示從字符串的尾部開始截取
select substr('abcde',2,3);substr('abcde',2),substr('abcde',-2,1) from dual;
3、獲取字符串長度的函數:length(char)
select length('abc ') from dual;
4、字符串連接函數:concat(char1,char2);與||操作符的作用一樣
select concat('ab','cd') from dual;
select 'ab' ||'cd' from dual;
5、去除子串函數:trim(c2 from c1),c2是一個字符,c1是字符串
select trim('c' from 'cdccec') from dual;--dcce,去除左右2邊是c開始的字符
select trim('c' from 'ccdd') from dual;--dd
ltrim(c1[,c2]);c1是字符串,c2是字符,從頭部去除一個字符
rtrim(c1[,c2]):
trim(c1):代表去除左右2邊的空格
ltrim(c1):只有一個參數的話代表去除左邊的空格
rtrim(c1):只有一個參數的話代表去除右邊的空格
7、替換函數replace()
select replace('abcde','a','A')from dual
select replace('abcde','a')from dual;--替換為空格
select replace('abcde','ab',A) from dual;
日期函數:
系統時間函數:SYSDATE 默認格式DD-MM-YY(日月年)
ADD_MONTHS(date,i):select add_months(sysdate,3),add_months(sysdate,-3) from dual;
NEXT_DAY(date,char):select next_day(sysdate,'星期一') from dual;
LAST_DAY(char):select last_day(sysdate) from dual;
MONTHS_BETWEEN(char1,char2):計算2個日期之間間隔的月份
select months_between('20-5月-15','10-1月-15') from dual;
日期操作函數:
獲取年份、月份、日期、小時
提取指定日期部分的函數
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 '2015-10-1 17:22:22') from dual;
轉換函數:
日期轉換為字符的函數
TO_CHAR(date[,fmt[,params]]):date:將要轉換的日期、fmt:轉換的格式、params:日期的語言
默認是DD-MM-YY
select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') FROM DUAL;//默認最後一個參數不寫
字符轉換為日期的函數
TO_DATE(char[,fmt[,params]]):
select to_date('2015-05-22','YYYY-MM-DD') FROM DUAL;
//注意:to_date()按照系統默認的格式顯示日期
數字轉換為字符的函數
select to_char(12345.678,'$99,999.999') from dual;
字符轉換為數字的函數
TO_NUMBER(char[parms]);
select to_number('$1,000','$9999') from dual;
在查詢語句中使用函數時輸出結果的特殊改變不會影響到數據庫中的值
在員工信息表中查詢出員工的生日
select substr(cardid,7,8) from users;
將部門號01全部替換成信息技術
select replace(deptno,'01','信息技術') from users;
將員工信息表中的年齡字段與10取余
select mod(age,10) from users;
取得員工入職的年份
select extract(year from regdate) from users;
查詢出5月份入職的員工信息
select * from users where extract(month from regdate)=5;