Oracle 資料庫/正則表示式支援
外觀
| 類 | 表示式 | 描述 |
|---|---|---|
| 錨定字元 | ^ | 行首 |
| $ | 行尾 | |
| 量詞字元 | * | 匹配 0 次或多次 |
| + | 匹配 1 次或多次 | |
| ? | 匹配 0 次或 1 次 | |
| {m} | 精確匹配 m 次 | |
| {m,} | 至少匹配 m 次 | |
| {m, n} | 至少匹配 m 次,但不超過 n 次 | |
| \n | 導致前面的表示式重複 n 次 | |
| 選擇和分組 | | | 分隔選擇項,通常與分組運算子 () 一起使用 |
| ( ) | 將子表示式分組為一個單元,用於選擇、量詞或反向引用(參見“反向引用”部分) | |
| [char] | 表示一個字元列表;字元列表中的大多數元字元被理解為字面量,但字元類、^ 和 - 元字元除外 | |
| POSIX 字元 | [:alnum:] | 字母數字字元 |
| [:alpha:] | 字母字元 | |
| [:blank:] | 空格字元 | |
| [:cntrl:] | 控制字元(非列印字元) | |
| [:digit:] | 數字 | |
| [:graph:] | 任何 [:punct:], [:upper:], [:lower:], 和 [:digit:] 字元 | |
| [:lower:] | 小寫字母字元 | |
| [:print:] | 可列印字元 | |
| [:punct:] | 標點符號字元 | |
| [:space:] | 空格字元(非列印字元),例如回車符、換行符、垂直製表符和換頁符 | |
| [:upper:] | 大寫字母字元 | |
| [:xdigit:] | 十六進位制字元 | |
| 等價類 | = = | 嵌入在方括號中的等價類,它匹配一個基本字母及其所有帶重音的版本。例如,等價類 '[=a=]' 匹配 ä 和 â。 |
| 匹配選項 | c | 區分大小寫匹配 |
| i | 不區分大小寫匹配 | |
| m | 將源字串視為多行,啟用錨字元 | |
| n | 允許句點 (.) 匹配任何換行符 | |
| x | 忽略空白字元 |
REGEXP_LIKE 執行復雜的正則表示式模式匹配,並支援比 LIKE 更廣泛的字串模式範圍。此函式在 10g 中引入。
姓以 T 開頭,第二個字元是 'o' 或 'u'
SELECT last_name
FROM hr.employees
WHERE REGEXP_LIKE(last_name, '^T[ou]');
姓以 'T' 開頭,以 'r' 結尾
select last_name
from hr.employees
where REGEXP_LIKE( last_name, '^T.*r$' );
名字是 'Steven' 或 'Stephen'
SELECT first_name
FROM hr.employees
WHERE REGEXP_LIKE (first_name, '^Ste(v|ph)en$');
姓包含雙母音字元(例如,'aa'、'ee'、'ii'、'oo'、'uu'),匹配不區分大小寫
SELECT last_name
FROM hr.employees
WHERE REGEXP_LIKE (last_name, '([aeiou])\1', 'i');
REGEXP_INSTR 執行復雜的正則表示式模式匹配,並支援比 INSTR 更廣泛的字串模式範圍。此函式在 10g 中引入。
顯示第一個小寫母音字元的位置
SELECT last_name, REGEXP_INSTR(last_name, '[aeiou]')
FROM hr.employees;
REGEXP_SUBSTR 執行復雜的正則表示式模式匹配,並支援比 SUBSTR 更廣泛的字串模式範圍。此函式在 10g 中引入。
如果姓以 'A' 或 'C' 開頭,則提取第一個字元
SELECT last_name, REGEXP_SUBSTR(last_name, '^[AC]')
FROM hr.employees;
從第 3 個位置開始,從姓中提取 2 個字元
SELECT last_name, REGEXP_SUBSTR(last_name, '..',3)
FROM hr.employees;
REGEXP_COUNT 對值執行計數,它與聚合函式 COUNT 不同。此函式在 11g 中引入。
在姓中查詢母音模式的出現次數
SELECT last_name, REGEXP_COUNT( last_name, '[aeiou]' )
FROM hr.employees;