首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle 單列函數大全:字串、數學、日期函數完整參考與範例

     編輯:Oracle 資料庫相關知識

字串函數

函數說明範例結果
ASCII(c)回傳字元 ASCII 碼ASCII('A')65
CHR(n)回傳數字對應字元CHR(65)A
CONCAT(s1,s2)連接兩字串 (同 ||)CONCAT('A','B')AB
INITCAP(s)首字母大寫,其餘小寫INITCAP('hello world')Hello World
INSTR(s, sub, pos, nth)搜尋子字串位置INSTR('oracle','ra',1,2)9
LENGTH(s)字串長度 (字元數)LENGTH('中文')2
LOWER(s)轉小寫LOWER('AbC')abc
UPPER(s)轉大寫UPPER('AbC')ABC
LPAD(s, n, pad)左補字元至長度 nLPAD('123',6,'0')000123
RPAD(s, n, pad)右補字元至長度 nRPAD('123',6,'0')123000
LTRIM(s, chars)移除左側指定字元 (預設空白)LTRIM(' abc')abc
RTRIM(s, chars)移除右側指定字元RTRIM('abc ')abc
TRIM([BOTH|LEADING|TRAILING] c FROM s)標準修剪函數TRIM(' abc ')abc
SUBSTR(s, pos, len)擷取子字串SUBSTR('abcdef',2,3)bcd
REPLACE(s, old, new)取代字串REPLACE('abc','a','x')xbc
TRANSLATE(s, from, to)字元級對照取代TRANSLATE('abc','ab','12')12c

數學函數

函數說明範例結果
ABS(n)絕對值ABS(-5)5
CEIL(n)大於等於 n 的最小整數CEIL(3.2)4
FLOOR(n)小於等於 n 的最大整數FLOOR(3.8)3
MOD(m,n)餘數 (m - n*FLOOR(m/n))MOD(10,3)1
POWER(m,n)m 的 n 次方POWER(2,3)8
ROUND(n, decimals)四捨五入ROUND(3.14159,2)3.14
TRUNC(n, decimals)截斷 (不四捨五入)TRUNC(3.14159,2)3.14
SQRT(n)平方根SQRT(16)4
SIGN(n)正負號 (1/0/-1)SIGN(-5)-1
EXP(n)e 的 n 次方EXP(1)2.718...
LN(n)自然對數LN(2.718)1
LOG(b,n)以 b 為底對數LOG(10,100)2
SIN/COS/TAN三角函數 (弧度)SIN(3.14159/2)1

日期函數

函數說明範例結果類型
SYSDATE資料庫伺服器當前日期時間SYSDATEDATE
SYSTIMESTAMP含時區與毫秒的當前時間SYSTIMESTAMPTIMESTAMP WITH TIME ZONE
CURRENT_DATESession 時區當前日期CURRENT_DATEDATE
CURRENT_TIMESTAMPSession 時區當前時間戳CURRENT_TIMESTAMPTIMESTAMP WITH TIME ZONE
ADD_MONTHS(d, n)日期加減 n 月ADD_MONTHS(SYSDATE,3)DATE
MONTHS_BETWEEN(d1,d2)兩日期月數差 (含小數)MONTHS_BETWEEN(d1,d2)NUMBER
LAST_DAY(d)該月最後一天LAST_DAY(SYSDATE)DATE
NEXT_DAY(d, weekday)日期 d 之後的第一個指定星期幾NEXT_DAY(SYSDATE,'MONDAY')DATE
ROUND(d, fmt)日期捨入 (fmt: YEAR/MONTH/DAY...)ROUND(SYSDATE,'MONTH')DATE
TRUNC(d, fmt)日期截斷TRUNC(SYSDATE,'YEAR')DATE
EXTRACT(field FROM d)擷取日期欄位 (YEAR/MONTH/DAY/HOUR...)EXTRACT(MONTH FROM SYSDATE)NUMBER
NEW_TIME(d, tz1, tz2)時區轉換 (舊版)NEW_TIME(d,'GMT','PST')DATE
TO_CHAR(d, fmt, nls)日期轉字串TO_CHAR(SYSDATE,'YYYY-MM-DD')VARCHAR2
TO_DATE(s, fmt, nls)字串轉日期TO_DATE('2023-01-01','YYYY-MM-DD')DATE

日期格式化元素速查

元素說明範例輸出
YYYY / YY4/2 位數年份2023 / 23
MM / MON / MONTH月份數字 / 縮寫 / 全名01 / JAN / JANUARY
DD / DDD月內第幾天 / 年內第幾天15 / 045
HH24 / HH1224/12 小時制14 / 02
MI / SS分 / 秒30 / 59
FF / FF3毫秒 / 3 位毫秒.123456 / .123
DAY / DY星期全名 / 縮寫MONDAY / MON
AM / PM上午/下午標記PM
TZD / TZH / TZM時區縮寫/時差時/時差分PST / -08 / 00

常用日期運算模式

-- 間隔運算 (10g+)
SYSDATE - INTERVAL '7' MINUTE
SYSDATE - INTERVAL '7' HOUR
SYSDATE - INTERVAL '7' DAY
SYSDATE - INTERVAL '7' MONTH
SYSDATE - INTERVAL '7' YEAR
SYSDATE - 8 * INTERVAL '2' HOUR

-- 毫秒精度 (需 TIMESTAMP)
TO_CHAR(CURRENT_TIMESTAMP(9), 'MI:SS.FF')  -- 精度可至 9 位

-- 程式執行時間測量 (毫秒)
DECLARE
  l_start NUMBER := DBMS_UTILITY.GET_TIME;  -- 百分之一秒
BEGIN
  -- 要測量的程式碼
  FOR i IN 1..1000 LOOP NULL; END LOOP;
  DBMS_OUTPUT.PUT_LINE(ROUND((DBMS_UTILITY.GET_TIME - l_start)/100, 2) || ' seconds');
END;

轉換函數

函數說明
TO_CHAR(n|d, fmt, nls)數字/日期轉字串
TO_NUMBER(s, fmt, nls)字串轉數字
TO_DATE(s, fmt, nls)字串轉日期
TO_TIMESTAMP(s, fmt)字串轉時間戳
CAST(expr AS type)ANSI 標準轉型
CHARTOROWID(s)字串轉 ROWID
ROWIDTOCHAR(rowid)ROWID 轉字串
HEXTORAW(s)十六進位字串轉 RAW
RAWTOHEX(raw)RAW 轉十六進位字串
CONVERT(s, dest_cs, src_cs)字元集轉換
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved