Oracle 10g資料庫內建了符合IEEE POSIX (Portable Operating System for Unix)標準的正則表示式。熟練使用正則表示式,可以寫出簡潔,強大的SQL語句。
正則表示式有幾個優點優於常見的LIKE操作符和INSTR、SUBSTR及REPLACE 函式的。這些傳統的SQL 函式不便於進行模式匹配。只有LIKE 操作符通過使用%和_字元匹配,但LIKE不支援表示式的重複、複雜的`更替、字元範圍、字元列表和POSIX 字元類等等。
元字元(Meta Character):
Sql程式碼
^ 使表示式定位至一行的開頭
$ 使表示式定位至一行的末尾
* 匹配 0 次或更多次
? 匹配 0 次或 1 次
+ 匹配 1 次或更多次
{m} 正好匹配 m 次
{m,} 至少匹配 m 次
{m, n} 至少匹配 m 次但不超過 n 次
[:alpha:] 字母字元
[:lower:] 小寫字母字元
[:upper:] 大寫字母字元
[:digit:] 數字
[:alnum:] 字母數字字元
[:space:] 空白字元(禁止列印),如回車符、換行符、豎直製表符和換頁符[:punct:] 標點字元
[:cntrl:] 控制字元(禁止列印)
[:print:] 可列印字元 | 分隔替換選項,通常與分組操作符 () 一起使用
( ) 將子表示式分組為一個替換單元、量詞單元或後向引用單元
[char] 字元列表
Oracle 10g提供了四個regexp function: REGEXP_LIKE , REGEXP_REPLACE , REGEXP_INSTR , REGEXP_SUBSTR 。
Sql程式碼
REGEXP_LIKE:比較一個字串是否與正則表示式匹配
(srcstr, pattern [, match_option])
REGEXP_INSTR:在字串中查詢正則表示式,並且返回匹配的位置
(srcstr, pattern [, position [, occurrence [, return_option [, match_option]]]])
REGEXP_SUBSTR:返回與正則表示式匹配的子字串
(srcstr, pattern [, position [, occurrence [, match_option]]])
REGEXP_REPLACE:搜尋並且替換匹配的正則表示式
(srcstr, pattern [, replacestr [, position [, occurrence [, match_option]]]]) 其中各引數的含義為:
Sql程式碼
srcstr: 被查詢的字元資料。
pattern: 正則表示式。
occurrence: 出現的次數。預設為1。
position: 開始位置
return_option: 預設值為0,返回該模式的起始位置;值為1則返回符合匹配條件的下一個字元的起始位置。