Oracle10g提供了在查詢中使用正則表達的功能,它是通過各種支援正規表示式的函式在where子句中實現的。本文將簡單的介紹oracle正規表示式常用語法,並通過一個手機特號匹配的例子演示正規表示式的使用。
1、oracle正則表達常用語法
定位元字元
元字元 |
說明 |
^ |
使表示式定位至一行的開頭 |
$ |
使表示式定位至一行的末尾 |
量詞或重複操作符
量詞 |
說明 |
* |
匹配 0 次或更多次 |
? |
匹配 0 次或 1 次 |
+ |
匹配 1 次或更多次 |
{m} |
正好匹配 m 次 |
{m,} |
至少匹配 m 次 |
{m, n} |
至少匹配 m 次但不超過 n 次 |
POSIX 字元類
字元類 |
說明 |
[:alpha:] |
字母字元 |
[:lower:] |
小寫字母字元 |
[:upper:] |
大寫字母字元 |
[:digit:] |
數字 |
[:alnum:] |
字母數字字元 |
[:space:] |
空白字元(禁止列印),如回車符、換行符、豎直製表符和換頁符 |
[:punct:] |
標點字元 |
[:cntrl:] |
控制字元(禁止列印) |
[:print:] |
可列印字元 |
模式匹配
專案 |
說明 |
\n |
n為一個 1 到 9 之間的數字,反斜線匹配之前的用括號括起來的第n個子表示式。 |
() |
子表示式。 |
[] |
字元列表 |
REGEXP_LIKE 函式
語法 |
說明 |
REGEXP_LIKE(source_string, pattern |
source_string 支援字元資料型別(CHAR、VARCHAR2、CLOB、NCHAR、NVARCHAR2 和 NCLOB,但不包括 LONG)。pattern 引數是正規表示式的另一個名稱。match_parameter 允許可選的引數(如處理換行符、保留多行格式化以及提供對區分大小寫的控制)。 |
2、oracle正則表達匹配手機特號
尾號四連號:([0123456789])\1\1\1$ 如:13498212222、13613431111
sql:select * from tb_phone where REGEXP_LIKE(phone_no,'([0123456789])\1\1\1$')
尾號四連順:(0123|1234|2345|3456|4567|5678|6789)$ 如:13576531234、13623432345
尾號倒四連順:(9876|8765|7654|6543|5432|4321|3210)$ 如:13512329876、13676987654
尾號00XX:00[[:digit:]][[:digit:]]$ 如:13512320023、13512320035
尾號AABB:([[:digit:]])\1([[:digit:]])\2$ 如:13567545566
尾號ABAB:([[:digit:]]{2})\1$ 如:13545341212
尾號AAAB:([[:digit:]])\1\1[[:digit:]]$ 如:13564326667
轉載於:
https://www.cnblogs.com/wanghonghu/archive/2012/05/12/2497392.html