一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Oracle - 詳細整理Oracle中常用函數

詳細整理Oracle中常用函數

2022-01-17 18:13隨風飄揚中 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

二、數字函數

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

函數 說明 示例
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。

三、日期函數

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

1add_months(d,n),在某一個日期 d 上,加上指定的月數 n,返回計算后的新日期。

d 表示日期,n 表示要加的月數。

例:select sysdate,add_months(sysdate,5) from dual;

 詳細整理Oracle中常用函數

2、last_day(d),返回指定日期當月的最后一天。

例:select sysdate,last_day(sysdate) from dual;

 詳細整理Oracle中常用函數

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;

 詳細整理Oracle中常用函數

與 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;

詳細整理Oracle中常用函數

四、轉換函數

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

1、to_char(d|n[,fmt])

把日期和數字轉換為制定格式的字符串。fmt是格式化字符串

代碼演示:to_char對日期的處理

select to_char(sysdate,'yyyy"年"mm"月"dd"日" hh24:mi:ss')"date" from dual;

 詳細整理Oracle中常用函數

代碼解析:

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

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

參數 示例 說明
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;

 詳細整理Oracle中常用函數

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;

 詳細整理Oracle中常用函數

五、其它單行函數

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

到此這篇關于詳細整理oracle中常用函數的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/weixin_39805338/article/details/81002980

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 99在线在线视频免费视频观看 | 日本又黄又裸一级大黄裸片 | 亚洲色大成网站www久久九九 | 四虎永久免费在线观看 | 出轨同学会2在线观看 | 久久中文骚妇内射 | 特黄特色一级aa毛片免费观看 | se01在线看片 | 操老肥熟 | 男女性潮高片无遮挡禁18 | 免费观看国产大片资源视频 | 17个农民工婉莹第一部 | 骚虎网站在线观看 | 午夜福利在线观看6080 | 国产一区二区三区在线看 | 日韩视频在线观看中字 | 四虎在线永久视频观看 | 国产a不卡片精品免费观看 国产aaa伦理片 | bl双性受乖调教改造身体 | 国产香蕉国产精品偷在线观看 | 国产精品免费aⅴ片在线观看 | 网友自拍偷拍 | 91porny丨首页| www.四虎.com | 亚洲人成毛片线播放 | 久久视频在线视频观看天天看视频 | 亚洲AV久久久久久久无码 | 欧美精品国产一区二区三区 | 精品国产午夜久久久久九九 | 亚洲国产精品自在在线观看 | 国产自拍啪啪 | 精品一区二区三区波多野结衣 | chinese野外gay军人| 深夜影院深a | 欧美成人香蕉在线观看 | 三上悠亚久久国产 | 天天爱天天做天天爽天天躁 | uoco福利姬网站 | 免费看黄色片的网站 | 免费亚洲视频 | 交换年轻夫妇HD中文字幕 |