主要是對項目中用過的 oracle 函數進行總結,並做出目錄,方便後續項目是快速查找,提高效率。 01.Round (數值的四捨五入) 描述:傳回一個數值,該數值是按照指定的小數位元數進行四捨五入運算的結果。 SELECT Round(Number,[Decimal_Places])FROM Dua
主要是對項目中用過的 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,就是上月