目錄
一、字串函數
三、日期函數
四、轉換函數
五、其它单行函数
六、聚合函数
首頁 資料庫 Oracle 歸納整理Oracle中常用函數

歸納整理Oracle中常用函數

Aug 30, 2022 pm 02:00 PM
oracle

這篇文章為大家帶來了關於Oracle的相關知識,其中詳細講解了Oracle中常用函數,透過範例程式碼介紹,希望對大家的學習或工作具有一定的參考借鑒價值,希望對大家有幫助。

歸納整理Oracle中常用函數

推薦教學:《Oracle影片教學

oracle資料庫中主要使用兩種類型的函數:

1.  單行函數:操作一行數據,傳回一個結果

  • #常用的單行函數有:
  • 字串函數:對字串運算。
  • 數字函數:對數字進行計算,傳回一個數字。
  • 日期函數:對日期和時間進行處理。
  • 轉換函數:可以將一種資料型別轉換為另外一種資料型別。

2.  聚合函數(多行函數、分組函數、群組函數):操作多行數據,並傳回一個結果。例如 SUM

一、字串函數

字元函數接受字元參數,這些參數可以是表中的列,也可以是字串表達式。

常用的字元函數:

函數 #說明
ASCII(X) 傳回字元X的ASCII碼
CONCAT(X,Y) 連接字串X和Y
#INSTR(X,STR[,START][,N) 從X中尋找str,可以指定從start開始,也可以指定從n開始
LENGTH(X) 傳回X的長度
#LOWER(X) X轉換成小寫
UPPER(X) X轉換成大寫
#LTRIM(X[,TRIM_STR]) 把X的左截去trim_str字串,預設截去空格
RTRIM(X[,TRIM_STR]) 把X的右邊截去trim_str字串,缺省截去空格
TRIM([TRIM_STR  FROM]X) 把X的兩邊截去trim_str字串,缺省截斷空格
#REPLACE(X,old,new) 在X中尋找old,並替換成new
SUBSTR(X,start[,length]) 傳回X的字串,從start處開始,截取length個字符,缺省length,預設到結尾

上面各函數的例子:

範例 範例結果
#SELECT ASCII('a') FROM dual; #97
SELECT CONCAT('Hello','world') FROM dual; Helloworld
SELECT INSTR ('Hello world','or') FROM dual; 8
#SELECT LENGTH('Hello') FROM dual; #5
SELECT LOWER('Hello') FROM dual; hello
SELECT UPPER('hello') FROM dual; HELLO
SELECT LTRIM('=Hello=','=') FROM dual; Hello=
#SELECT RTRIM('=Hello=','=') FROM dual; =Hello
SELECT TRIM('='FROM'= Hello=') FROM dual; Hello
SELECT REPLACE('ABCDE','CD','AAA')FROM dual; ABAAAE
SELECT SUBSTR('ABCDE',2,3) FROM dual; BCD

二、數字函數

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

##X除以Y的餘數MOD(8,3)=2POWER(X,Y)X的Y次方POWER( 2,3)=8ROUND(X[,Y])X在Y位四捨五入ROUND(3.456,2) =3.46SQRT(X)X的平方根SQRT(4)=2TRUNC(X[,Y])X在第Y位元截斷TRUNC(3.456,2)=3.45

說明:

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)"minute",

       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;
登入後複製

 

程式碼解析:

#在格式化字串中,使用雙引號對非格式化字元進行引用

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

函數 說明 範例
ABS(X) X的絕對值 ABS(-3)=3
#ACOS(X) X的反餘弦 ACOS(1)=0
COS(X) 餘弦 COS(1)=0.54030230586814
#CEIL(X) 大於或等於X的最小值 CEIL(5.4)=6
FLOOR(X) 小於或等於X的最大值 FLOOR(5.8)=5
#LOG(X,Y) X為底Y的對數 LOG(2,4)=2
#MOD(X,Y)
9.#,$##EEEE9.99EEEE
參數
#範例說明
999指定位置處顯示數字
9.9指定位置傳回小數點
99,99指定位置回傳一個逗號
$999數字開頭傳回一個美元符號
###科學計數法表示#############L######L999######數位前加一個本地貨幣符號# ###########PR######999PR######如果數字式負數則用尖括號表示############

代码演示:TO_CHAR对数字的处理

SELECT TO_CHAR(-123123.45,'L9.9EEEEPR')"date" FROM dual;
登入後複製

2、TO_DATE(X,[,fmt])

把一个字符串以fmt格式转换成一个日期类型

3、TO_NUMBER(X,[,fmt])

把一个字符串以fmt格式转换为一个数字

代码演示:TO_NUM函数

SELECT TO_NUMBER('-$12,345.67','$99,999.99')"num" FROM dual;
登入後複製

五、其它单行函数

1、NVL(X,VALUE)

如果X为空,返回value,否则返回X

例:对工资是2000元以下的员工,如果没发奖金,每人奖金100元

代码演示:NVL函数

SELECT ENAME,JOB,SAL,NVL(COMM,100) FROM EMP WHERE SAL<2000;
登入後複製

-------------------------------------------------------------------

ENAME JOB SAL NVL(COMM,100)

SMITH CLERK 800 100

ALLEN SALESMAN 1600 300

WARD SALESMAN 1250 500

MARTIN SALESMAN 1250 1400

TURNER SALESMAN 1500 50

ADAMS CLERK 1100 100

JAMES CLERK 950 100

-------------------------------------------------------------------

7 rows selected

2、NVL2(x,value1,value2)

如果x非空,返回value1,否则返回value2

例:对EMP表中工资为2000元以下的员工,如果没有奖金,则奖金为200元,如果有奖金,则在原来的奖金基础上加100元

代码演示:NVL2函数

SELECT ENAME,JOB,SAL,NVL2(COMM,comm+100,200) "comm" FROM EMP WHERE SAL<2000;
登入後複製

-------------------------------------------------------------------

ENAME JOB SAL comm

SMITH CLERK 800 200

ALLEN SALESMAN 1600 400

WARD SALESMAN 1250 600

MARTIN SALESMAN 1250 1500

TURNER SALESMAN 1500 150

ADAMS CLERK 1100 200

JAMES CLERK 950 200

MILLER CLERK 1300 200

-------------------------------------------------------------------------------------------------------

8 rows selected

六、聚合函数

聚合函数同时对一组数据进行操作,返回一行结果,比如计算一组数据的总和,平均值等。

名称作用语法
AVG平均值AVG(表达式)
SUM求和SUM(表达式)
MIN、MAX最小值、最大值MIN(表达式)、MAX(表达式)
COUNT数据统计COUNT(表达式)

例:求本月所有员工的基本工资总和

代码演示:sum函数

SELECT SUM(sal) FROM emp;
登入後複製

-------------------------------------------------------------------

SUM(SAL)

29025

例:求不同部门的平均工资

代码演示:AVG函数下的分组查询

SELECT DEPTNO,AVG(SAL) FROM EMP GROUP BY DEPTNO;
登入後複製

-------------------------------------------------------------------

DEPTNO    AVG(SAL)

---------    ----------

30    1566.66666

20     2175

10    2916.66666

推荐教程:《Oracle视频教程

以上是歸納整理Oracle中常用函數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

oracle如何查表空間大小 oracle如何查表空間大小 Apr 11, 2025 pm 08:15 PM

要查詢 Oracle 表空間大小,請遵循以下步驟:確定表空間名稱,方法是運行查詢:SELECT tablespace_name FROM dba_tablespaces;查詢表空間大小,方法是運行查詢:SELECT sum(bytes) AS total_size, sum(bytes_free) AS available_space, sum(bytes) - sum(bytes_free) AS used_space FROM dba_data_files WHERE tablespace_

如何在oracle中創建表 如何在oracle中創建表 Apr 11, 2025 pm 08:00 PM

創建 Oracle 表涉及以下步驟:使用 CREATE TABLE 語法指定表名、列名、數據類型、約束和默認值。表名應簡潔、描述性,且不超過 30 個字符。列名應描述性,數據類型指定列中存儲的數據類型。 NOT NULL 約束確保列中不允許使用空值,DEFAULT 子句可指定列的默認值。 PRIMARY KEY 約束標識表的唯一記錄。 FOREIGN KEY 約束指定表中的列引用另一個表中的主鍵。請參見示例表 students 的創建,其中包含主鍵、唯一約束和默認值。

Oracle安裝失敗如何卸載 Oracle安裝失敗如何卸載 Apr 11, 2025 pm 08:24 PM

Oracle 安裝失敗的卸載方法:關閉 Oracle 服務,刪除 Oracle 程序文件和註冊表項,卸載 Oracle 環境變量,重新啟動計算機。若卸載失敗,可使用 Oracle 通用卸載工具手動卸載。

oracle數據庫如何導入 oracle數據庫如何導入 Apr 11, 2025 pm 08:06 PM

數據導入方法:1. 使用 SQLLoader 實用程序:準備數據文件、創建控製文件、運行 SQLLoader;2. 使用 IMP/EXP 工具:導出數據、導入數據。提示:1. 大數據集推薦 SQL*Loader;2. 目標表應存在,列定義匹配;3. 導入後需驗證數據完整性。

oracle如何查看實例名 oracle如何查看實例名 Apr 11, 2025 pm 08:18 PM

在 Oracle 中查看實例名的方法有三種:命令行中使用 "sqlplus" 和 "select instance_name from v$instance;" 命令。在 SQL*Plus 中使用 "show instance_name;" 命令。通過操作系統的任務管理器、Oracle Enterprise Manager 或檢查環境變量 (Linux 上的 ORACLE_SID)。

oracle視圖如何加密 oracle視圖如何加密 Apr 11, 2025 pm 08:30 PM

Oracle 視圖加密允許您加密視圖中的數據,從而增強敏感信息安全性。步驟包括:1) 創建主加密密鑰 (MEk);2) 創建加密視圖,指定要加密的視圖和 MEk;3) 授權用戶訪問加密視圖。加密視圖工作原理:當用戶查詢加密視圖時,Oracle 使用 MEk 解密數據,確保只有授權用戶可以訪問可讀數據。

oracle如何去重查詢 oracle如何去重查詢 Apr 11, 2025 pm 07:33 PM

Oracle 提供多種去重查詢方法:DISTINCT 關鍵字返回每列的唯一值。 GROUP BY 子句對結果分組並返回每個分組的非重複值。 UNIQUE 關鍵字用於創建僅包含唯一行的索引,查詢該索引將自動去重。 ROW_NUMBER() 函數分配唯一數字並過濾出僅包含第 1 行的結果。 MIN() 或 MAX() 函數可返回數字列的非重複值。 INTERSECT 運算符返回兩個結果集的公共值(無重複項)。

oracle如何獲取時間 oracle如何獲取時間 Apr 11, 2025 pm 08:09 PM

在 Oracle 中獲取時間有以下方法:CURRENT_TIMESTAMP:返回當前系統時間,精確到秒。 SYSTIMESTAMP:比 CURRENT_TIMESTAMP 更準確,精確到納秒。 SYSDATE:返回當前系統日期,不含時間部分。 TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS'): 將當前系統日期和時間轉換為特定格式。 EXTRACT:從時間值中提取特定部分,如年份、月份或小時。

See all articles