函數的作用:
方便數據的統計
處理查詢結果
數值函數
四捨五入:
- ROUND(n[,M])
- 省略m : 0
- m>0:小數點後m位
m<0:小數點前m位
n表示要進行四五入的值
m表示保留小數點後幾位或前幾位select round(23.4),round(23.45,1),round(23.45,-1) from dual;
取整函數:
- double floor(double x);
- double ceil(double x);
- 使用floor函數。floor(x)返回的是小於或等於x的最大整數。
如:floor(10.5) == 10 floor(-10.5) == -11 - 使用ceil函數。ceil(x)返回的是大於x的最小整數。
如:ceil(10.5) == 11 ceil(-10.5) ==-10
floor()是向負無窮大舍入,floor(-10.5) == -11;
ceil()是向正無窮大舍入,ceil(-10.5) == -10
常用計算:
- ABS(n)
- MOD(m,n)//m除以n的餘數,如果m和n中有一個值爲null值,則結果返回null值
- POWER(m,n)//表示返回m的n次冪,23用POWER(2,3)表示
SQRT(n)//16的平方根表示爲sqrt(16),結果是4
select ABS(-7) from dual; //返回絕對值,返回7
select mod(5,3) from dual; //返回2
select power(2,3) from dual;//返回8
select sqrt(16) from dual;//返回4
三角函數:
SIN(x)
【功能】返回一個數字的正弦值
【示例】select sin(1.57079) from dual;
返回: 1SIGH(x)
【功能】返回雙曲正弦的值
【示例】select sin(20),sinh(20) from dual;
返回:0.91294525, 242582598COS(x)
【功能】返回一個給定數字的餘弦
【示例】select cos(-3.1415927) from dual;
返回: -1COSH(x)
【功能】返回一個數字反餘弦值
【示例】select cosh(20) from dual;
返回:242582598TAN
【功能返回數字的正切值
【示例】select tan(20),tan(10) from dual;
返回:2.2371609 ,0.64836083TANH
【功能返回數字n的雙曲正切值
【示例】select tanh(20),tan(20) from dual;
返回:1 ,2.2371609ASIN(x)
【功能】給出反正弦的值
【示例】select asin(0.5) from dual;
返回:0.52359878ACOS(x)
【功能】給出反餘弦的值
【示例】select acos(-1) from dual;
返回:3.1415927ATAN(x)
【功能】返回一個數字的反正切值
【示例】 select atan(1) from dual;
返回:0.78539816
字符函數
大小寫轉換函數
獲取子字符串函數
獲取字符串長度函數
字符串連接函數
去除子串函數
替換函數
大小寫轉換函數:
- UPPER(char)//返回所有大寫
- LOWER(char)//返回所有小寫
- INITCAP(char)//返回首字母大寫,其餘都小寫
- 大小寫轉換函數的用途:註冊用戶名
select upper(‘aBde’),lower(‘ASSsSS’),initcap(‘aBbB’) from dual;
獲取子字符串函數:
- SUBSTR(char,[m[,n]])
- char代表源字符串,m代表取子串的開始位置,n代表截取子串的位數
- 當n省略時代表從m的位置截取到字串末尾
- m爲0,代表從字符串的首字母開始截取
- m爲負數,表示從字符串的尾部開始截取
select substr(‘abcd’,2,3) from dual; //返回bcd
獲取字符串長度函數:
- LENGTH(char)
- 空格也算一個字符
select LENGTH(‘abcd’) from tmp;//返回4
字符串連接函數:
- CONCAT(char1,char2)
- 與||操作符的作用一樣
select concat(‘ab’,’cd’) from dual; //返回abcd
select ‘ab’||’cd’ from dual;//返回abcd
去除子串函數
- TRIM(c2 FROM c1)
- 該函數表示從字符串c1中去除字符c2
select trim(‘d’ from ‘abcd’) from dual;//返回abc
LTRIM(c1[,c2])
- 從左邊開始獲取
- 也可以去除字符串前面的空格,格式爲LTRIM(n)
select ltrim(‘abcde’,’a’) from dual;//返回bcde
RTRIM(c1[,c2])
- 從右邊開始獲取
- 也可以去除字符串後面的空格
select rtrim(‘abcde’,’e’) from dual;//返回abcd
TRIM(c1)
- 去除字符串前後的空格
替換函數:
- REPLACE(char,s_string[,r_string])
- 省略r_string用空格替換
select replace(‘abcde’,’a’,’A’) from dual;//返回Abcde
select replace(‘abcde’,’abcd’,’A’) from dual;//返回Ae
日期函數
系統時間:
- SYSDATE
- 默認格式:DD-MON-RR 日-月-年
日期操作:
- ADD_MONTHS(date,i)
- 該函數的作用是返回指定日期上添加的月份
- 如果i是小數,則截取整數部分
如果i是負數,相當於爲原日期減去月份
select add_months(sysdate,3),add_months(sysdate,-1) 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-3月-15’) from dual;EXTRACT(date FROM datetime)
- //語法如下:
EXTRACT (
{ YEAR | MONTH | DAY | HOUR | MINUTE | SECOND }
| { TIMEZONE_HOUR | TIMEZONE_MINUTE }
| { TIMEZONE_REGION | TIMEZONE_ABBR }
FROM { date_value | interval_value } ) - 用於從一個date或者interval類型中截取到特定的部分
select EXTRACT(year from sysdate),EXTRACT(month from sysdate),EXTRACT(day from sysdate) from dual;//返回年月日
selectEXTRACT(HOURfromtimestamp’2015101717:55:13’),EXTRACT(minute from timestamp ‘2015-10-17 17:55:13’),EXTRACT(second from timestamp ‘2015-10-17 17:55:13’) from dual;//返回時分秒
轉換函數
日期轉換成字符的函數
字符轉換成日期的函數
數字轉換成字符的函數
字符轉換成數字的函數
日期轉換成字符的函數 :
- TO_CHAR(date[,fmt[,params]])
- 參數說明:date,將要轉換的日期;fmt:轉換的格式;params:日期的語言
- 默認格式:DD-MON-RR
- fmt的格式可以如下定義:
轉換的格式 | 其含義 |
---|---|
YY YYYY YEAR | 兩位數的年;四位數的年;英文表示的年 |
MM MONTHS | 月;英文表示的月 |
DD DAY | 天;中文表示的星期幾 |
HH24 HH12 | 24小時制;12小時制 |
MI SS | 分;秒 |
select to_char(sysdate, ‘YYYY-MM-DD HH24:MI:SS’) from dual;
字符轉換成日期的函數 :
- TO_DATE(char[,fmt[,params]])
- 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(123456.789, ‘S$99,9999.999’) from dual;//返回+12,3456.789
字符轉換成數字的函數:
- TO_NUMBER(char[,fmt])
- fmt是轉換的格式,可以省略
select to_number(‘1,000′,′ 9999’) from dual;//返回1000
在查詢中使用函數
在查詢中使用字符函數
在查詢中使用數值函數
在查詢中使用日期函數
在查詢中使用字符函數
在員工信息表查詢出員工的生日
select substr(a.cardid,7,8) from ttuser a將部門號01全部替換成”信息技術”
select replace(detno,’01’,’信息技術’) from ttuser
在查詢中使用數值函數
- 將員工信息表中的年齡字段與10取餘數
select mod(a.age,10) from ttuser a
在查詢中使用日期函數
取得員工入職的年份
select EXTRACT(year from regdate) from ttuser查詢出5月份入職的員工信息
select * from ttuser where extract(month from regdate) = 5 ;
總結 :
函數名稱 | 語法(關鍵字) |
---|---|
數值函數 | 四捨五入:ROUND(n[,m]) 取整:FLOOR(n) 絕對值:ABS(n) 取餘數:MOD(m,n) 平方根:SORT(n) 三角函數:SIN(n)、ASIN(n)等 |
字符函數 | 大小寫轉換:UPPER(char)、LOWER(char) 字符串連接:CONCAT(char1,char2) 獲取子字符串:SUBSTR(char,[m,[,n]]) 獲取字符串長度:LENGTH(char) |
日期函數 | 獲取當前時間函數SYSDATE ADD_MONTHS(date,i) LAST_DAY(date) MONTHS_BETWEEN(date1,date2) EXTRACT(date FROM datetime) |
轉換函數 | TO_CHAR(date[,fmt[,params]]) TO_CHAR(number[,fmt]) |