oracle終於在10g中提供了對正規表示式的支援,以前那些需要通過like來進行的複雜的匹配就可以通過使用正規表示式更簡單的實現。
oracle中的支援正規表示式的函式主要有下面四個:
1,regexp_like :與like的功能相似
2,regexp_instr :與instr的功能相似
3,regexp_substr :與substr的功能相似
4,regexp_replace :與replace的功能相似
在新的函式中使用正規表示式來代替萬用字元『%』和『_』。
正規表示式由標準的元字元(metacharacters)所構成:
'^' 匹配輸入字串的開始位置,在方括號表示式中使用,此時它表示不接受該字元集合。
'$' 匹配輸入字串的結尾位置。如果設定了 regexp 物件的 multiline 屬性,則 $ 也匹配 'n' 或 'r'。
'.' 匹配除換行符 n之外的任何單字元。
'?' 匹配前面的子表示式零次或一次。
'+' 匹配前面的子表示式一次或多次。
'*' 匹配前面的子表示式零次或多次。
'|' 指明兩項之間的乙個選擇。例子'^([a-z]+|[0-9]+)$'表示所有小寫字母或數字組合成的字串。
'( )' 標記乙個子表示式的開始和結束位置。
'' 標記乙個中括號表示式。
'' 乙個精確地出現次數範圍,m=《出現次數<=n,''表示出現m次,''表示至少出現m次。
num 匹配 num,其中 num 是乙個正整數。對所獲取的匹配的引用。
字元簇:
[[:alpha:]] 任何字母。
[[:digit:]] 任何數字。
[[:alnum:]] 任何字母和數字。
[[:space:]] 任何白字元。
[[:upper:]] 任何大寫字母。
[[:lower:]] 任何小寫字母。
[[:punct:]] 任何標點符號。
[[:xdigit:]] 任何16進製制的數字,相當於[0-9a-fa-f]。
各種操作符的運算優先順序
轉義符(), (?:), (?=), 圓括號和方括號
*, +, ?, , , 限定符
^, $, anymetacharacter 位置和順序
| 「或」操作
下面通過幾個例子來具體說明這幾個新函式的使用方法:
sql> create table sunwg (id varchar2(100));
table created.
sql> insert into sunwg values ('http://sunwgneuqsoft.itpub.net/post/34741/447698">常見sql訪問索引的方式');
1 row created.
sql> commit;
commit complete.
sql> select * from sunwg;
idhttp://sunwgneuqsoft.itpub.net/post/34741/447698">常見sql訪問索引的方式
1, regexp_like
regexp_like與like類似,用regexp_like能實現的操作大部分都可以用like實現,不過要簡單方便得多。
目標:查詢表sunwg中是否存在類似與3xx41的記錄?
like:
select * from sunwg where id like '%3__41%';
regexp_like
select * from sunwg where regexp_like(id,'3..41');
目標:查詢表sunwg中是否存在類似與3xx41的記錄,並且xx必須是數字?
like:
這個like我就想出來很好的實現辦法了,唯一想到就是擷取出來後判斷該字串是不是純數字的。
regexp_like
select * from sunwg where regexp_like(id,'3[0-9]41');
用regexp_like則可以簡單快捷的得到結果。其他幾個函式也都有類似的情況,下面的函式就不具體比較差異了,僅僅給出常用的用法。
2, regexp_instr
目標:查詢表sunwg中是否存在類似與3xx41的字串第一次出現的位置?
www.163.com">常見sql訪問索引的方式
從上面的例子可以看得出來這幾個支援正規表示式的函式是十分強大的,合理的加以使用一定會使你寫出的sql更加簡單高效。
正值表示式
b color darkblue size large 正規表示式 size color b 正規表示式用於字串處理 表單驗證等場合,實用高效。現將一些常用的表示式收集於此,以備不時之需。匹配中文字元的正規表示式 u4e00 u9fa5 評注 匹配中文還真是個頭疼的事,有了這個表示式就好辦了 匹配雙...
理解正值表示式
最近用到了python裡面的re這個library,每次用到的時候有點不明所以,所以還是搜搜資料然後寫一下筆記來方便理解和使用吧。正規表示式這個名詞的意思大概就是根據使用規則來提取表示式,也就是說,利用約定的語法規則去提取你想要的東西 以下是基本的一些規則,理解了規則,正規表示式就很清晰了 等價符 ...
As3 常用到的正值表示式驗證
判斷是否為中文字串 plic function matchchinese word string void else 匹配郵件位址 plic function matchemail email string void else 匹配 plic function matchurl url string...