1. 程式人生 > >Oracle 函數

Oracle 函數

$1 rom 數字函數 mes 個數字 缺省 nvl 轉換 聚合

Oracle SQL 提供了用於執行特定操作的專用函數。這些函數大大增強了 SQL 語言的功能。 函數可以接受零個或者多個輸入參數,並返回一個輸出結果。Oracle 數據庫中主要使用兩種 類型的函數:

  1. 單行函數:對每一個函數應用在表的記錄中時,只能輸入一行結果,返回一個結果, 比如:MOD(x,y)返回 x 除以 y 的余數(x 和 y 可以是兩個整數,也可以是表中的整 數列)。常用的單行函數有:

  ? 字符函數:對字符串操作。

  ? 數字函數:對數字進行計算,返回一個數字。

  ? 轉換函數:可以將一種數據類型轉換為另外一種數據類型。

  ? 日期函數:對日期和時間進行處理。

  2. 聚合函數:聚合函數同時可以對多行數據進行操作,並返回一個結果。比如 SUM(x) 返回結果集中 x 列的總合。

字符函數

字符函數接受字符參數,這些參數可以是表中的列,也可以是一個字符串表達式。下表 列出了常用的字符函數。

技術分享圖片

技術分享圖片

技術分享圖片

數字函數

數字函數接受數字參數,參數可以來自表中的一列,也可以是一個數字表達式。

技術分享圖片

技術分享圖片

說明:

1. ROUND(X[,Y]),四舍五入。 在缺省 y 時,默認 y=0;比如:ROUND(3.56)=4。y 是正整數,就是四舍五入到小數點後 y 位。ROUND(5.654,2)=5.65。 y 是負整數,四舍五入到小數點左邊|y|位。ROUND(351.654,-2)=400。

2. TRUNC(x[,y]),直接截取,不四舍五入。 在缺省 y 時,默認 y=0;比如:TRUNC (3.56)=3。 y 是正整數,就是四舍五入到小數點後 y 位。TRUNC (5.654,2)=5.65。 y 是負整數,四舍五入到小數點左邊|y|位。TRUNC (351.654,-2)=300。

日期函數

日期函數對日期進行運算。常用的日期函數有:

1. ADD_MONTHS(d,n),在某一個日期 d 上,加上指定的月數 n,返回計算後的新日期。 d 表示日期,n 表示要加的月數。

SELECT SYSDATE,ADD_MONTHS(SYSDATE,5) FROM DUAL

技術分享圖片

2. LAST_DAY(d),返回指定日期當月的最後一天。

SELECT SYSDATE,LAST_DAY(SYSDATE) FROM DUAL

技術分享圖片

3. ROUND(d[,fmt]),返回一個以 fmt 為格式的四舍五入日期值,d 是日期,fmt 是格式 模型。默認 fmt 為 DDD,即月中的某一天。

  ? 如果 fmt 為“YEAR”則舍入到某年的 1 月 1 日,即前半年舍去,後半年作為下 一年。

  ? 如果 fmt 為“MONTH”則舍入到某月的 1 日,即前月舍去,後半月作為下一 月。

  ? 默認為“DDD”,即月中的某一天,最靠近的天,前半天舍去,後半天作為第 二天。

  ? 如果 fmt 為“DAY”則舍入到最近的周的周日,即上半周舍去,下半周作為下 一周周日。

SELECT SYSDATE,ROUND(SYSDATE),ROUND(SYSDATE,DAY),ROUND(SYSDATE,MONTH),ROUND(SYSDATE,YEAR) FROM DUAL

技術分享圖片

與 ROUND 對應的函數時 TRUNC(d[,fmt])對日期的操作,TRUNC 與 ROUND 非常相似,只 是不對日期進行舍入,直接截取到對應格式的第一天。

4. EXTRACT(fmt FROM d),提取日期中的特定部分。

fmt 為:YEAR、MONTH、DAY、HOUR、MINUTE、SECOND。其中 YEAR、MONTH、DAY 可以為 DATE 類型匹配,也可以與 TIMESTAMP 類型匹配;但是 HOUR、MINUTE、SECOND 必 須與 TIMESTAMP 類型匹配。HOUR 匹配的結果中沒有加上時區,因此在中國運行的結果小 8 小時。

SELECT SYSDATE "date",
       EXTRACT(YEAR FROM SYSDATE) "year",
       EXTRACT(MONTH FROM SYSDATE) "month",
       EXTRACT(DAY FROM SYSDATE) "day",
       EXTRACT(HOUR FROM SYSTIMESTAMP) "hour",
       EXTRACT(MINUTE FROM SYSTIMESTAMP) "mintue",
       EXTRACT(SECOND FROM SYSTIMESTAMP) "second"
FROM DUAL

轉換函數

轉換函數將值從一種數據類型轉換為另外一種數據類型。常用的轉換函數有:

1. TO_CHAR(d|n[,fmt]) 把日期和數字轉換為制定格式的字符串。fmt 是格式化字符串

-- 代碼演示:TO_CHAR 對日期的處理
SELECT TO_CHAR(SYSDATE,YYYY"年"MM"月"DD"日" HH24:MI:SS) "date" FROM DUAL

技術分享圖片

針對數字的格式化,格式化字符有:

技術分享圖片

 -- 代碼演示:TO_CHAR 對數字的處理
 SELECT TO_CHAR(-123123.45,L9.9EEEEPR) "date" FROM DUAL

技術分享圖片

2. TO_DATE(x [,fmt]) 把一個字符串以 fmt 格式轉換為一個日期類型

SELECT TO_DATE(2009-8-9 1:30:10, YYYY-MM-DD HH24:MI:SS ) "date" FROM DUAL;

技術分享圖片

3. TO_NUMBER(x[,fmt]) 把一個字符串以 fmt 格式轉換為一個數字。fmt 格式字符參考表 3。

 SELECT TO_NUMBER(-$12,345.67,$99,999.99) "NUM" FROM DUAL

技術分享圖片

其他單行函數

1. NVL(x,value) 如果 x 為空,返回 value,否則返回 x。

2. NVL2(x,value1,value2) 如果 x 非空,返回 value1,否則返回 value2。

聚合函數

聚合函數同時對一組數據進行操作,返回一行結果,比如計算一組數據的總和,平均值 等。

技術分享圖片

Oracle 函數