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則返回符合匹配條件的下一個字元的起始位置。