oracle常用高级函数,oracle常用函数详解(详细)
轉自:https://www.cnblogs.com/lxl57610/p/7442130.html
Oracle?SQL?提供了用于執行特定操作的專用函數。這些函數大大增強了?SQL?語言的功能。函數可以接受零個或者多個輸入參數,并返回一個輸出結果。?oracle?數據庫中主要使用兩種類型的函數:
1.??單行函數:對每一個函數應用在表的記錄中時,只能輸入一行結果,返回一個結果,
比如:MOD(x,y)返回?x?除以?y?的余數(x?和?y?可以是兩個整數,也可以是表中的整
數列)。常用的單行函數有:
???字符函數:對字符串操作。
???數字函數:對數字進行計算,返回一個數字。
???轉換函數:可以將一種數據類型轉換為另外一種數據類型。
???日期函數:對日期和時間進行處理。
2.??聚合函數:聚合函數同時可以對多行數據進行操作,并返回一個結果。比如?SUM(x)
返回結果集中?x?列的總合。
一、字符函數
字符函數接受字符參數,這些參數可以是表中的列,也可以是一個字符串表達式。
常用的字符函數:
函數
說明
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
二、數字函數
數字函數接受數字參數,參數可以來自表中的一列,也可以是一個數字表達式。
函數
說明
示例
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)
X除以Y的余數
MOD(8,3)=2
POWER(X,Y)
X的Y次冪
POWER(2,3)=8
ROUND(X[,Y])
X在第Y位四舍五入
ROUND(3.456,2)=3.46
SQRT(X)
X的平方根
SQRT(4)=2
TRUNC(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;
代碼解析:
在格式化字符串中,使用雙引號對非格式化字符進行引用
針對數字的格式化,格式化字符有:
參數
示例
說明
9
999
指定位置處顯示數字
.
9.9
指定位置返回小數點
,
99,99
指定位置返回一個逗號
$
$999
數字開頭返回一個美元符號
EEEE
9.99EEEE
科學計數法表示
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函數
SQL>?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函數
SQL>?SELECT?ENAME,JOB,SAL,NVL2(COMM,comm+100,200)?"comm"
2???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函數
SQL>?SELECT?SUM(sal)?FROM?emp;
-------------------------------------------------------------------
SUM(SAL)
29025
例:求不同部門的平均工資
代碼演示:AVG函數下的分組查詢
SQL>?SELECT?DEPTNO,AVG(SAL)?FROM?EMP?GROUP?BY?DEPTNO;
-------------------------------------------------------------------
DEPTNO????AVG(SAL)
---------????----------
30????1566.66666
20?????2175
10????2916.66666
STL之map與pair與unordered_map常用函數詳解
STL之map與pair與unordered_map常用函數詳解 一.map的概述 map是STL的一個關聯容器,它提供一對一(其中第一個可以稱為關鍵字,每個關鍵字只能在map中出現一次,第二個可能稱 ...
php緩存技術——memcache常用函數詳解
php緩存技術——memcache常用函數詳解 2016-04-07?aileen?PHP編程 Memcache函數庫是在PECL(PHP Extension Community Library)中, ...
# OpenGL常用函數詳解(持續更新)
OpenGL常用函數詳解(持續更新) 初始化 void glutInit(int* argc,char** argv)初始化GULT庫,對應main函數的兩個參數 void gultInitWindo ...
Linux and Oracle常用目錄詳解
目錄詳解 目錄 內容 / 根目錄,一切從這里開始 /bin 包含系統啟動和運行所必需的二進制文件(程序) /boot 包含Linux內核.最初的RAM磁盤映像(系統啟動時,驅動程序會用到),以及啟動加 ...
Discuz 插件制作之后臺常用函數詳解
目錄 showsetting()表單顯示 cpmsg()提示消息 showformheader()創建表單頭 showformfooter()創建表單尾 showtableheader()創建表格頭 ...
numpy.random 常用函數詳解之排列亂序篇(Permutations)
1.numpy.random.shuffle(x) 參數:填入數組或列表. 返回值:無. 函數功能描述:對填入的數組或列表進行亂序處理,shape保持不變. 2.numpy.random.permut ...
numpy.random 常用函數詳解之簡單隨機數篇(Simple random data)
1.numpy.random.rand(d0,d1,d2,...,dn) 參數:d0,d1,d2,...,dn 須是正整數,用來描述生成隨機數組的維度.如(3,2)代表生成3行2列的隨機數組. 返回值 ...
DB2常用函數詳解(一):字符串函數
VALUE函數 語法:VALUE(EXPRESSION1,EXPRESSION2) VALUE函數是用返回一個非空的值,當其第一個參數非空,直接返回該參數的值,如果第一個參數為空,則返回第一個參數的值 ...
DB2常用函數詳解
(一)?字符串函數 VALUE函數? 語法:VALUE(EXPRESSION1,EXPRESSION2) VALUE函數是用返回一個非空的值,當其第一個參數非空,直接返回該參數的值,如果第一個參數為空 ...
隨機推薦
Linux 桌面系統字體配置要略
字體顯示效果測試 這一段是為了測試宋體字的顯示效果,包括宋體里面自帶的英文字體,“This is english,how does it look like?”.這一行是小字.后面幾個字是加粗的宋體. ...
ArcPy之Python介紹
1.Python簡介 Python是一種面向對象.解釋型計算機程序設計語言;Python是一種簡單易學,功能強大的編程語言.它有高效率的高層數據結構,簡單而有效地實現面向對象編程.Python簡潔的語 ...
Velocity $ 和$! 區別
輸出指令 ${}過濾輸出 輸出表達式的計算結果,并進行過濾,比如:過濾變量中的HTML標簽. 格式: ${expression} 示例: ${user.name} 注:HTTL缺省開啟了EscapeX ...
MongoDB圖形化管理工具
NoSQL的運動不止,MongoDB 作為其中的主力軍發展迅猛,也帶起了一股開發圖形化工具的風潮:氣死反過來說,看一個產品是否得到認可,可以側面看其第三方工具的數量和成熟程度:簡單的收集了MongoD ...
easyUI中treegrid組件構造樹形表格(簡單數據類型)+ssm后臺
這幾天做的項目要求用樹形表格的形式展示一部分數據,于是就想到了使用easyUI的treegrid組件,但幾經翻查各種資料,發現數據類型大多采取標準數據類型,即包含children元素的數據類型,小編查 ...
eclipse怎么切換SVN的用戶
在用eclipse的時候會經常用到SVN來進行代碼的版本控制,為了方便起見,我們會保存密碼,從此之后就不會再出現輸入或者修改用戶名和密碼的地方了,這時候想切換用戶怎么辦,在本地操作的一種方法是刪除SV ...
【轉】Appium根據xpath獲取控件實例隨筆
總結
以上是生活随笔為你收集整理的oracle常用高级函数,oracle常用函数详解(详细)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js怎么实现ftp上传文件到服务器上,j
- 下一篇: Hadoop环境搭建与入门实例