首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

Oracle SQL 常用函式大全:字串、數值、日期、轉換與彙總

     編輯:MySQL 綜合教學

Oracle SQL 常用函式大全:字串、數值、日期、轉換與彙總

本文整理 Oracle 資料庫開發中最常用的 SQL 函式,分類收錄字串處理、數學運算、日期時間、型別轉換、空值處理與群組彙總,附帶實用範例,方便查閱。

一、字串函式

函式說明範例
INITCAP(str)首字母大寫SELECT INITCAP('ni hao') FROM dual; → Ni Hao
LTRIM(str, chars)移除左側指定字元SELECT LTRIM('ni hao ni', 'ni') FROM dual; → hao ni
RTRIM(str, chars)移除右側指定字元SELECT RTRIM('hao ni hao', 'hao') FROM dual; → hao ni
CONCAT(s1, s2) / \|\|字串串接SELECT stuNo || ' ' || name FROM student;
SUBSTR(str, pos, len)擷取子字串(位置從 1 起)SELECT SUBSTR('nihao hi hello', 1, 10) FROM dual;
INSTR(str, substr)搜尋子字串位置SELECT INSTR('nihao', 'ni') FROM dual; → 1
LENGTH(str)字串長度SELECT LENGTH(address) FROM student;
RPAD(str, n, pad)右側填充至指定長度INSERT INTO school VALUES(RPAD(88,8,'0'), '南京大學');
LPAD(str, n, pad)左側填充(常用流水號)INSERT INTO school VALUES('S'||LPAD(89,7,'0'), '江蘇科技大學');
LOWER/UPPER大小寫轉換WHERE UPPER(email) = UPPER('Bob.wang') 不分大小寫比對

二、數值函式

函式說明範例
ABS(n)絕對值SELECT ABS(-10) FROM dual; → 10
CEIL(n)無條件進位SELECT CEIL(-10.1) FROM dual; → -10
FLOOR(n)無條件捨去SELECT FLOOR(-10.1) FROM dual; → -11
POWER(m, n)冪運算SELECT POWER(10,4) FROM dual; → 10000
MOD(m, n)取餘數SELECT MOD(-10,3) FROM dual; → -1
SQRT(n)平方根SELECT SQRT(100) FROM dual; → 10
TRUNC(n, d)截取小數位(不四捨五入)SELECT TRUNC(19.99281,3) FROM dual; → 19.992
ROUND(n, d)四捨五入SELECT ROUND(19.99281,3) FROM dual; → 19.993

三、日期函式

函式說明範例
SYSDATE目前系統日期時間SELECT SYSDATE FROM dual;
ADD_MONTHS(d, n)日期加減月份SELECT ADD_MONTHS('25-11月-14', 2) FROM dual;
LAST_DAY(d)該月最後一天SELECT LAST_DAY(SYSDATE) FROM dual;
MONTHS_BETWEEN(d1, d2)兩日期月份差SELECT MONTHS_BETWEEN('25-11月-14', SYSDATE) FROM dual;
NEXT_DAY(d, n)下一個指定週幾(1=週日)SELECT NEXT_DAY(SYSDATE, 6) FROM dual; → 下週五
ROUND(d, 'MONTH')日期四捨五入(月中分界)SELECT ROUND(SYSDATE, 'MONTH') FROM dual;
TRUNC(d, 'YEAR')截取至年/月/日SELECT TRUNC(SYSDATE, 'YEAR') FROM dual; → 該年 1/1
GREATEST/LEAST多值最大/最小SELECT GREATEST(d1, d2, d3) FROM dual; 任一為 NULL 則回 NULL

四、型別轉換與空值處理

函式說明範例
TO_DATE(str, fmt)字串轉日期TO_DATE('1995-10-10','YYYY-MM-DD')
TO_CHAR(d, fmt)日期轉字串TO_CHAR(birthDate,'YYYY-MM-DD')
TO_NUMBER(str)字串轉數值SELECT TO_NUMBER(schoolCode) FROM school;
NVL(expr1, expr2)NULL 替換(Oracle 專用)SELECT NVL(javaSEScore, 60) FROM student;
COALESCE(e1, e2,...)回傳第一個非 NULLSELECT COALESCE('', '', '1', 'value') FROM dual; → '1'

五、群組彙總函式

函式說明範例
COUNT(*)/COUNT(col)筆數統計(忽略 NULL)SELECT COUNT(*) FROM student;
SUM(col)加總SELECT SUM(javaSEScore) FROM student;
AVG(col)平均SELECT AVG(javaSEScore) FROM student;
MAX/MIN(col)最大/最小值SELECT MAX(javaSEScore) FROM student;
STDDEV(col)標準差SELECT STDDEV(javaSEScore) FROM student;
VARIANCE(col)變異數SELECT VARIANCE(javaSEScore) FROM student;

使用提醒

  • dual 為 Oracle 虛擬表,單行測試常用
  • 日期格式模型區分大小寫:YYYY-MM-DD vs yyyy-mm-dd
  • NVL 為 Oracle 專屬,跨資料庫請用 COALESCE 或 CASE
  • 彙總函式搭配 GROUP BY 使用時,SELECT 清單欄位需包含於 GROUP BY 或為彙總函式
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved