Oracle中的函數和C中的函數差不多,也是有函數名,參數表,和返回值類型組成的,單行函數,是針對每條記錄都有一個結果。單行函數可以出現在select 后面,也可以出現在where子句中。
需要處理現實的結果時,就把函數寫在select后面,用于條件過濾時,就把函數用在where子句中。
1,字符函數(varchar)
-
字符是大小寫敏感的
轉小寫 lower(‘...’)
轉大寫 upper(‘...’)
首字母大寫 initcap(‘...’)
dual表,是專門用于函數測試和運算的,他只有一條記錄
字符串拼接 concat(‘...’,’....’)
求指定子串 substr(‘...’,起始位置,取字符個數)(起始位置可以為負)
求制定字符串的長度length(‘……’)
可以使用"-"表示從右向左取,取的時候可以從左往友取。
例:
select upper(‘test’) from dual;
select first_name from s_emp where upper(first_name)=’GEORGE’;
select substr(first_name,-2,2) sub from s_emp;(取后兩個)
select substr(first_name,2,2) sub from s_emp;(取前兩個)
2,數值函數(number)
四舍五入 round(數據,保留小數點后幾位)
可以用負數表示小數點前,0,表示小數點后第一位,也就是保留個位,-1表示個位(保留到十 位)。
例:select round(15.36,1) from dual;
結果:15.4
截取數字函數 trunc(數據,保留的位數(小數點后位數)) 截取個位之后補0
例:select trunc(123.456,-1) from dual; 保留倒十位
結果:120
3,日期函數
日期格式,
全日期格式 世紀信息,年月日,時分秒。
缺省日期格式,日-月-年 dd-mon-rr
日期類型是可以進行數學運算的,+1,是下一天,-1,是上一天,數據庫會對數據所隱式的轉換。
修改當前會話的日期格式,會按照指定的格式輸出日期
alter session set nls_date_format='yyyy mm dd hh24:mi:ss';
返回當前日期 sysdate
例:select sysdate+20 from dual;
日期是格式敏感的
求兩個日期間相隔了多少個月 months_between(date1,date2)
加減指定數量的月份 add_months(date,月數),月數可以為負,負值就是減去相應的月數。
從下周開始的日期加一天 next_day(date,天數)
例:select next_day(sysdate,2) from dual;
返回月末的日期 last_day(date)
截取日期 trunc(date,'年或月或日或時分秒')
例:select trunc(add_months(sysdate,1),'month') from dual;
4,不同數據類型間轉換函數
將日期轉成字符 tochar(date,'日期格式')
日期格式要用有效格式,格式大小寫敏感 'yyyy mm dd hh24:mi:ss','year'(全拼的年),'mm'(數字表示的月) 'month'(全拼的月),'day'(星期的全拼),'ddspth' (日期的全拼) 'yy mm dd',’rr-mm-dd’(會根據年份判斷世紀)
例:select to_char(sysdate,'yyyy mm dd hh24:mi:ss') from dual;
將字符轉換成數字 to_number('...'),(可以加第二參數,第二參數指定定數字進制)
將數字轉字符to_char(number,'fmt') fmt是數字格式
將字符串轉成日期 to_date('...','日期格式')
例:select to_char(to_date('2006 11 03','yyyy mm dd'),'dd-month-yy')
from dual;
5,函數嵌套
例:select to_char(to_date('2006 11 03','yyyy mm dd'),'dd-month-yy')
from dual;
本文出自:億恩科技【www.vbseamall.com】
服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM]
|