程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> Oracle 常用函數,oracle函數

Oracle 常用函數,oracle函數

編輯:Oracle教程

Oracle 常用函數,oracle函數


     主要是對項目中用過的 oracle 函數進行總結,並做出目錄,方便後續項目是快速查找,提高效率。

01.Round (數值的四捨五入)

描述:傳回一個數值,該數值是按照指定的小數位元數進行四捨五入運算的結果。

SELECT Round(Number,[Decimal_Places])FROM Dual;

param:
Number:欲處理的數值
Decimal_Places:四捨五入,小數取幾位(預設為0)
Sample:

SELECT Round(123.456,1)FROM Dual;

output:123.5

SELECT Round(123.4567,3)FROM Dual;

output:123.458

02.Case ...When... (oracle 的if...else...)

case XX屬性(可不填) when XX屬性判斷 then XX else XX end 你要賦值的表屬性
Sample:
CASE lanage
WHEN lanage='java' then
'01'
else
'02'
end code;
case ... when 類似與程序語言中的 if(){}else{}

03.Nvl (數據表字段的判空處理)

Nvl(string, replace_with)
param:
string:欲處理字符串
replace_with:要替換的字符串
如果string為NULL,則NVL函數返回replace_with的值,否則返回string1的值,如果兩個參數都為NULL ,則返回NULL
可以用於字段判空後的處理操作,比如教室職稱,如果字段為空,都默認為普通。
Sample:

select nvl(t.title,'普通') from teacher t;

04.Decode (字段名稱的轉換)

decode(XX屬性,XX屬性值,'要轉譯為的字符串')函數:
舉例:

Select decode (t.title,'01','普通','02','高級','其他') from teacher 
這個函數在項目中用的比較多,與上面的case_when..其實有點相似

05.樹遞歸查詢

select ...
from ....
start with ....[開始遞歸遍歷的起點]
connect by prior [級聯關系,比如 下級.parentid = 上級.id]
當前表字段=級聯表字段 start with與connect by prior語句完成遞歸記錄,形成一棵樹形結構,通常可以在具有層次結構的表中使用。

06.Trunc (截取日期和數字處理)

其具體的語法格式如下:

1)Trunc(Date[,Fmt])
Trunc(To_Date('24-Nov-199908:00Pm'),'Dd-Mon-YyyyHh:MiAm')='24-Nov-199912:00:00Am'
2)Trunc(ForNumber)
--Trunc函數返回處理後的數值,其工作機制與Round函數極為類似,只是該函數不對指定小數前或後的部分做相應捨入選擇處理,而統統截去。
Trunc(89.985,2)=89.98
Trunc(89.985)=89
Trunc(89.985,-1)=80 
如果我們不需要從具體的表來取得

表中數據,而是單純地為了得到一些我們想得到的信息,並要通過Select完成時,就要借助一個對象,這個對象,就是Dual;
就是將數值型或者日期型轉化為字符型。
Sample:

To_Char(Number,'格式')
To_Char(Salary,’$99,999.99’)

07.Regexp_Substr (正則表達式的匹配)

Regexp_Substr(String,Pattern,Position,Occurrence,Modifier)
__Srcstr:需要進行正則處理的字符串
__Pattern:進行匹配的正則表達式
__Position:起始位置,從第幾個字符開始正則表達式匹配(默認為1)
__Occurrence:標識第幾個匹配組,默認為1
__Modifier:模式('i'不區分大小寫進行檢索;'c'區分大小寫進行檢索。默認為'c'。)

Sample:

Select Regexp_Substr('17,20,23','[^,]+',1,1,'i') As Str From Dual;

08.Substr (字符串的截取)

Substr(字符串,截取開始位置,截取長度)
Substr('HelloWorld',1,1)//返回結果為'h'*0和1都是表示截取的開始位置為第一個字符
Substr('HelloWorld',2,4)//返回結果為'Ello'

09.Replace('要更改字符串','被替換掉','替換')

Sample:

SelectReplace('111222333444','222','888')FromDual;

output:'111888333444'

10.Instr (字符串中特定字符的索引位置,從1開始)

Instr(源字符串,目標字符串,起始位置,匹配序號)
Instr函數返回要截取的字符串在源字符串中的位置。只檢索一次,就是說從字符的開始到字符的結尾就結束。

Param:

Instr(String1,String2[,Start_Position[,Nth_Appearance]])
String1源字符串,要在此字符串中查找。
String2要在String1中查找的字符串.
Start_Position代表String1的哪個位置開始查找。此參數可選,如果省略默認為1.字符串索引從1開始。如果此參數為正,從左到右開始檢索,如果此參數為負,從右到左檢索,返回要查找的字符串在源字符串中的開始索引。
Nth_Appearance代表要查找第幾次出現的String2.此參數可選,如果省略,默認為1.如果為負數系統會報錯。
SelectInstr('Syranmo','s')FromDual;--返回1
SelectInstr('Syranmo','Ra')FromDual;--返回3

11.add_months (獲取特定月份)

add_months(data,number)函數輸入日期上加上指定的幾個月返回一個新的日期;
Sample:

add_months(to_date('15-Nov-1961','d-mon-yyyy'),1) 

output:  15-Dec-1961
add_months(sysdate, -1) 返回當前日期月份-1,就是上月

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved