ORACLE 實用函式總結

dbasdk發表於2015-01-19
今天把自己最常用的一些ORACLE函式簡要做一下總結:

1、NULLIF(expr1,expr2)
邏輯等價於:CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END;
如果兩個表示式相等,NULLIF 返回NULL;
如果兩個表示式不相等,NULLIF 返回第一個 expr1 的值。

2、NVL(expr1,expr2)
邏輯等價於IF expr1 is null THEN expr2 ELSE expr1 END;
如果expr1為NULL,那麼返回expr2的值;
如果expr1不為NULL,則返回expr1的值。

3、NVL2(expr1,expr2,expr3)
如果expr1不為NULL,則返回expr2的值;
如果expr1為null,則返回expr3的值。

4、COALESCE(expr1,expr2,expr3...exprn)
從左往右數,遇到第一個不為null的值,則返回該值。

5、DECODE(value,if1,then1,if2,then2,if3,then3, . . . else)
Value 代表某個表列或計算結果。
如果value的值為if1,Decode函式的結果是then1;
如果value的值為if2,Decode函式結果是then2;
如果value的值不等於給出的任何配對時,結果就返回else。

6、LPAD(string,length, [pad_string])
從左邊對字串string使用指定的字元pad_string進行填充,length是該函式返回的字串長度。
如果字串string大於length,則從右到左擷取指定長度返回。

7、RPAD(string,length, [pad_string])
從右邊對字串string使用指定的字元pad_string進行填充。

8、REPLACE(string,search_string[,replacement_string])
將string中的search_string替換為replacement_string,如果replacement_string為空,則刪除所有search_string。 

9、TRANSLATE(string,from_string,to_string)
將string中存在的每個from_string中的字元被to_string中相應的字元所代替。
Replace是替換,而translate則是過濾。
例:select nvl2(translate('abc123','#1234567890.','#'),'字串','數字') from dual。

10、SUBSTR(string,start_position,[length])
在string裡,從start_position開始取length個字元。

11、SUBSTRB(string,start_position,[length])
含義同上,但多位元組符(漢字、全形符等),按2個字元計算的。

12、INSTR(string, substring[, position, occurrence])
從string中返回substring的位置,沒有找到返回0。

13、LTRIM(string1[,string2])
去除出現在string1左面的空格。如果使用string2,會將string2劃分為單字元然後進行遍歷,從左面進行查詢去除直到遇到不在string2中的字元。
例:select ltrim('10900111000991110224323','109') from dual; 
結果返回224323。
select ltrim('109200111000991110224323','109') from dual;
結果返回200111000991110224323。
string2分為'1','0','9'在string1中進行遍歷,查詢去除直到遇到'2'才停止。

14、RTRIM(string1[,string2])
去除出現在string1右面的空格。如果使用string2,會將string2劃分為單字元然後進行遍歷,從右面進行查詢去除直到遇到不在string2中的字元。

15、TRIM([[LEADING||TRAILING||BOTH] string2 FROM] string1)
去掉string1內包含的空格或者指定字元。string2必須是單個字元。

16、GREATEST(expr1,expr2, ... expr_n)
返回序列中的最大值,數字按大小排,字元按首字元比較。

17、LEAST(expr1,expr2, ... expr_n) 
返回序列中的最小值。

18、LENGTHB(string)
返回以位元組為單位的長度。多位元組符(漢字、全形符等),因為字符集的不同,LENGTHB得到的值可能會不一樣。如ZHS16GBK採用兩個byte位來定義一個漢字。而在UTF8,採用3個byte。可以使用Length()!=Lengthb()判斷是否有中文內容。

19、CAST(expr AS type_name)
強制轉換成指定的資料型別。

20、WM_CONCAT(column)
合併行記錄,實現行轉列。

21、INITCAP(string)
將字串string中單詞(注意是單詞)的第一個字母轉換為大寫,其它則轉換為小寫。

22、TO_CHAR([num]|[date[timestamp],date_type])
將數字、時間等型別轉換為字元型別。

23、TO_SINGLE_BYTE(string) 
將指定字元轉換為半形並返回char型別。

24、ROUND(num1[,num2]) 
返回四捨五入小數點右邊num2位後num1的值,num2預設值為0,如果num2為負數就舍入到小數點左邊相應的位上。

25、TRUNC(num1[,num2]) 
返回截尾到num2位小數的num1的值,當n2為預設設定時會將num1截尾為整數,如果n2為負值,就截尾在小數點左邊相應的位上。 

26、CEIL(num)
返回大於或等於給出數字的最小整數。

27、MOD(num1,num2) 
返回num1除num2的餘數,如果num2=0則返回num1的值。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29734436/viewspace-1406851/,如需轉載,請註明出處,否則將追究法律責任。

相關文章