oracle數據庫初步之函數

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;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章