主要是對項目中用過的 oracle 函數進行總結,並做出目錄,方便後續項目是快速查找,提高效率。
描述:傳回一個數值,該數值是按照指定的小數位元數進行四捨五入運算的結果。
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
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{}
Nvl(string, replace_with)
param:
string:欲處理字符串
replace_with:要替換的字符串
如果string為NULL,則NVL函數返回replace_with的值,否則返回string1的值,如果兩個參數都為NULL ,則返回NULL
可以用於字段判空後的處理操作,比如教室職稱,如果字段為空,都默認為普通。
Sample:
select nvl(t.title,'普通') from teacher t;
decode(XX屬性,XX屬性值,'要轉譯為的字符串')函數:
舉例:
Select decode (t.title,'01','普通','02','高級','其他') from teacher 這個函數在項目中用的比較多,與上面的case_when..其實有點相似
select ... from .... start with ....[開始遞歸遍歷的起點] connect by prior [級聯關系,比如 下級.parentid = 上級.id] 當前表字段=級聯表字段 start with與connect by prior語句完成遞歸記錄,形成一棵樹形結構,通常可以在具有層次結構的表中使用。
其具體的語法格式如下:
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’)
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;
Substr(字符串,截取開始位置,截取長度)
Substr('HelloWorld',1,1)//返回結果為'h'*0和1都是表示截取的開始位置為第一個字符
Substr('HelloWorld',2,4)//返回結果為'Ello'
Sample:
SelectReplace('111222333444','222','888')FromDual; output:'111888333444'
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
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,就是上月