在Oracle中使用正則表達(dá)式
從10g開始,可以在查詢中使用
一、正則表達(dá)式:
1、REGEXP_LIKE :匹配
REGEXP_LIKE(source_string, pattern[, match_parameter]):返回滿足匹配模式的字符串
相當(dāng)于增強(qiáng)的like函數(shù)。
- Source_string指定源字符表達(dá)式;
- pattern指定規(guī)則表達(dá)式;
- match_parameter指定默認(rèn)匹配操作的文本串。
其中 match_parameter參數(shù)都是可選的。
match_parameter的取值如下:
- 'c' 說明在進(jìn)行匹配時區(qū)分大小寫(缺省值);
- 'i' 說明在進(jìn)行匹配時不區(qū)分大小寫;
- 'n' 允許使用可以匹配任意字符的操作符;
- 'm' 將x作為一個包含多行的字符串。
- ‘x’ 忽略空白字符。
SELECT * FORM. tKHXX where REGEXP_LIKE(SJHM, '^[1]{1}[35]{1}[[:digit:]]{9}$'
2、REGEXP_REPLACE :替換
REGEXP_REPLACE(source_string,pattern,replace_string,position,occurtence,match_parameter):字符串替換函數(shù)
相當(dāng)于增強(qiáng)的replace函數(shù)。
- Source_string指定源字符表達(dá)式;
- pattern指定規(guī)則表達(dá)式;
- replace_string指定用于替換的字符串;
- position指定起始搜索位置;
- occurtence指定替換出現(xiàn)的第n個字符串;
- match_parameter指定默認(rèn)匹配操作的文本串
select length(regexp_replace('123-345-566', '[^-]', '')) from dual;
3、REGEXP_INSTR :位置
REGEXP_INSTR(source_string, pattern[, start_position[, occurrence[, return_option[, match_parameter]]]])該函數(shù)查找 pattern ,并返回該模式的第一個位置。
您可以隨意指定您想要開始搜索的 start_position。
- occurrence 參數(shù)默認(rèn)為 1,除非您指定您要查找接下來出現(xiàn)的一個模式。
- return_option 的默認(rèn)值為 0,它返回該模式的起始位置;值為 1 則返回符合匹配條件的下一個字符的起始位置。
SELECT REGEXP_INSTR ('hello itmyhome', 'e') FROM dual
4、REGEXP_SUBSTR :提取
REGEXP_SUBSTR(source_string, pattern[,position [, occurrence[, match_parameter]]]):返回匹配模式的子字符串。
相當(dāng)于增強(qiáng)的substr函數(shù)。
- Source_string指定源字符表達(dá)式;
- pattern指定規(guī)則表達(dá)式;
- position指定起始搜索位置;
- occurtence指定替換出現(xiàn)的第n個字符串;
- match_parameter指定默認(rèn)匹配操作的文本串。
其中position,occurtence,match_parameter參數(shù)都是可選的。
SELECT REGEXP_SUBSTR ('hello my phone is 520 ', '[0-9]+') FROM dual; --520
5、REGEXP_COUNT (Oracle 11g 新增) :計(jì)數(shù)
REGEXP_COUNT (source_char, pattern [, position [, match_parameter]])統(tǒng)計(jì)字符串出現(xiàn)的次數(shù)
select REGEXP_COUNT('123-345-566', '-') from dual;
二、預(yù)定義的 POSIX 字符簇
[:alpha:]:字母字符
[:lower:]:小寫字母字符
[:upper:]:大寫字母字符
[:digit:]:數(shù)字
[:alnum:]:字母數(shù)字字符
[:space:]:空白字符(禁止打?。?,如回車符、換行符、豎直制表符和換頁符
[:punct:]:標(biāo)點(diǎn)字符
[:cntrl:]:控制字符(禁止打印)
[:print:]:可打印字符
到此這篇關(guān)于在Oracle中使用正則表達(dá)式的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Oracle?exadata存儲節(jié)點(diǎn)更換內(nèi)存操作及報(bào)錯處理方法
在進(jìn)行Oracle?Exadata巡檢時,發(fā)現(xiàn)cell節(jié)點(diǎn)內(nèi)存報(bào)錯,需確認(rèn)內(nèi)存PN號及大小,并更換備件,這篇文章主要介紹了Oracle?exadata存儲節(jié)點(diǎn)更換內(nèi)存操作及報(bào)錯處理的相關(guān)資料,需要的朋友可以參考下2024-10-10oracle數(shù)據(jù)庫如何給用戶授權(quán)查詢權(quán)限
這篇文章主要給大家介紹了關(guān)于oracle數(shù)據(jù)庫如何給用戶授權(quán)查詢權(quán)限的相關(guān)資料,授予權(quán)限是數(shù)據(jù)庫管理中的重要任務(wù),它可以確保用戶有權(quán)訪問所需的數(shù)據(jù)庫對象,并執(zhí)行必要的操作,需要的朋友可以參考下2024-01-01詳解Oracle 中實(shí)現(xiàn)數(shù)據(jù)透視表的幾種方法
這篇文章主要介紹了詳解Oracle 中實(shí)現(xiàn)數(shù)據(jù)透視表的幾種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04oracle中commit之后進(jìn)行數(shù)據(jù)回滾的方法
這篇文章主要介紹了oracle中commit之后如何進(jìn)行數(shù)據(jù)回滾,本文給大家分享兩種方法,每種方法都給大家介紹的比較詳細(xì),需要的朋友可以參考下2021-12-12ORACLE 查詢被鎖住的對象,并結(jié)束其會話的方法
這篇文章主要介紹了ORACLE 查詢被鎖住的對象,并結(jié)束其會話的方法,需要的朋友可以參考下2015-12-12Windows Server 2012 安裝oracle11g(圖文教程)
這篇文章主要介紹了Windows Server 2012 安裝oracle11g(圖文教程),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12