----***************oracle正規表示式(regularexpression)***************==
/*在oracle裡正規表示式有四個函式可用,分別是regexp_like、regexp_substr、regexp_instr 和regexp_replace。
這裡在我們oracle 10g裡靈活應用。
先來簡單介紹一下正規表示式的內容,正規表示式是做為快速查詢的文字內容的,在linux應用比較多,
首先,行的起始與結束 「^」這個字元是表示只查詢行首的內容。「$」這個字元只查詢行末的內容。
接下來是「^」還可以做為乙個排除字元來使用。還是使用例子來做乙個演示比較明了一下。
*/來介紹乙個regexp_instr函式
regexp_instr 函式使用正規表示式返回搜尋模式的起點和終點。regexp_instr 的語法如下所示。regexp_instr 返回乙個整數,
指出搜尋模式的開始或結束的位置,如果沒有發現匹配的值,則返回0。
語法:
regexp_instr與instr函式相同,返回字串位置
regexp_instr(srcstr, pattern [, position [, occurrence [, return_option [,match_option]]]])
與regexp_substr一樣,它也有變數pattern、position(開始位置)、occurrence 和match_parameter;
這裡主要介紹一下新引數return_option 的作用,它允許使用者告訴oracle,模式出現的時候,要返回什麼內容。
select regexp_instr('asdfafdda>fda','sd') from dual
output:2
這裡去查詢sd的位置,這個和instr是在相同的
select regexp_instr('asdfafdda>fda','da',1,2) from dual
這裡是查詢da第二出現的位置
還有我們經常會遇到一種情況是,查詢某個字段,如果是等於「上海」或「北京」或者我們溫州就寫成大城市,
其它的寫成小城市,我們一般會考慮使用decode這種方式
select decode('上海','上海','大城市','北京' ,'大城市' ,'溫州' ,'大城市','小城市') from dual
只有兩個我們可能覺的sql也不是很冗長,如果有四五個的話,就有點長了,這裡使用regexp_instr就可以很多的去操作
select decode (regexp_instr('北京','^(上海|北京|溫州)'),0,'小城市', '大城市') from dual
通過regexp_instr不匹配時為0的條件,這樣就可以完成了
暱稱 正規表示式 四 正規表示式
存在形式 物件 作用 對字串進行複雜控制 建立正規表示式 var 變數名 new regexp 表示式 var 變數名 表示式 測試正規表示式 變數名.test str 返回布林值 邊界符 開頭 結尾 var rg abc 只要包含有abc這個字串返回的都是true rg.test abc true...
學習正規表示式(四)
我們知道 代表無限的數量也就是 0 次 或者 0次以上的任意數量 代表重複1次 或者 1次以上的任意數量 那麼 下面新內容來了 正則中 代表重複0次或者1次 例子 var reg s d?這個表示式可以 匹配 sx 或者s 其他的都無法匹配 動手。我們知道 代表重複指定次數 那麼 如果我要求重複數次...
正規表示式(四) 例項
在正規表示式中,連字元 有著特殊的意義,它表示乙個範圍,比如從0到9。因此,匹配社會安全號碼中的連字符號時,它的前面要加上乙個轉義字元 0 9 0 9 0 9 假設進行搜尋的時候,你希望連字符號可以出現,也可以不出現 即,999 99 9999和999999999都屬於正確的格式。這時,你可以在連字...