1,instr 函式
在Oracle/PLSQL中,instr函式返回要擷取的字串在源字串中的位置。
語法如下:
instr( string1, string2 [, start_position [, nth_appearance ] ] )
string1:源字串,要在此字串中查詢。
string2:要在string1中查詢的字串
start_position:代表string1的哪個位置開始查詢。此引數可選,如果省略預設為1.
字串索引從1開始。如果此引數為正,從左到右開始檢索,如果此引數為負,從右到左檢索,返回要查詢的字串在源字串中的開始索引。
nth_appearance代表要查詢第幾次出現的string2.此引數可選,如果省略,預設為1.如果為負數系統會報錯。
舉例說明:返回字元"j",在字串"liuhongjia"中開始的索引,也就是第一次出現的位置。
如果返回0表示不包含,否則表示包含。
2,談到oracle 系統函式,不得不說dual表,下面是引用相關的參考資料:dual是一個系統表,不能刪除或者修改其表結構。它的名稱叫做“偽表”或者“啞表”。檢視其表結構:SQL> desc dual 名稱
是否為空
?
型別 ----------- -------- -----------
DUMMY VARCHAR2(1)
其欄位只有一個“dummy”,中文叫做“啞巴”。長度只有1。這個表結構只供參考。
在Oracle中,使用dual的主要原因是為了計算表示式的值。表的操作只能是查詢,其它如增刪改或者修改表結構,都沒有實際應用價值,不用研究。也可以一次性計算多個表示式的值:還有一個最常見的用途就是查詢當前系統日期,·dual表主要用於計算表示式。 ·表結構只供引數,實際返回的列數與表示式的個數有關·dual表只有可能返回一行,不可能返回多行。因為dual表並不是從表中取資料。
如上例中查詢字串中字元出現出現的位置,又如查系統日期:
進行數學計算:
3,oracle下劃線轉義
用法如下圖所示: