共計 2494 個字符,預(yù)計需要花費 7 分鐘才能閱讀完成。
丸趣 TV 小編給大家分享一下 Oracle 中正則表達(dá)式怎么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
Oracle 使用正則表達(dá)式離不開這 4 個函數(shù):regexp_like、regexp_substr、regexp_instr、regexp_replace。
regexp_like
該函數(shù)只能用于條件表達(dá)式,和 like 類似,但是使用的正則表達(dá)式進行匹配
// 查詢所有包含小寫字母或者數(shù)字的記錄。 select * from fzq where regexp_like(value, ^([a-z]+|[0-9]+)$
regexp_substr
該函數(shù)和 substr 類似,用于拾取合符正則表達(dá)式描述的字符子串, 該函數(shù)的定義如下
function REGEXP_SUBSTR(String, pattern, position, occurrence, modifier)
- String 輸入的字符串
- pattern 正則表達(dá)式
- position 標(biāo)識從第幾個字符開始正則表達(dá)式匹配。(默認(rèn)為 1) - occurrence 標(biāo)識第幾個匹配組。(默認(rèn)為 1) - modifier 取值范圍: i:大小寫不敏感; c:大小寫敏感; n:點號 . 不匹配換行符號; m:多行模式; x:擴展模式,忽略正則表達(dá)式中的空白字符。
下面是一些實例
-- 檢索中間的數(shù)字
SELECT REGEXP_SUBSTR(a, [0-9]+ ) FROM test_reg_substr WHERE REGEXP_LIKE(a, [0-9]+
-- 檢索中間的數(shù)字(從第一個字母開始匹配,找第 2 個匹配項目)SELECT NVL(REGEXP_SUBSTR(a, [0-9]+ ,1, 2), - ) AS a FROM test_reg_substr
WHERE REGEXP_LIKE(a, [0-9]+
regexp_instr
該函數(shù)和 instr 類似,用于標(biāo)定符合正則表達(dá)式的字符子串的開始位置,Oracle 數(shù)據(jù)庫中的 REGEXP_INSTR 函數(shù)的語法是
REGEXP_INSTR (source_char, pattern [, position [, occurrence
[, return_option [, match_parameter ] ] ] ] )
- source_char 搜索值的字符表達(dá)式
- pattern 正則表達(dá)式
- position 可選。搜索在字符串中的開始位置。如果省略,則默認(rèn)為 1,這是字符串中的第一個位置。 - occurrence 可選。它是模式字符串中的第 n 個匹配位置。如果省略,默認(rèn)為 1。
- return_option 可選 指定 Oracle 返回的位置,
0 那么 Oracle 將返回出現(xiàn)的第一個字符的位置。這是默認(rèn)的,
1 則 Oracle 返回字符之后發(fā)生的位置。 - match_parameter 取值范圍: i:大小寫不敏感; c:大小寫敏感; n:點號 . 不匹配換行符號; m:多行模式; x:擴展模式,忽略正則表達(dá)式中的空白字符。
下面是一些實例
-- 找到字符串中的第一個”e”字的位置
-- 返回 2
SELECT REGEXP_INSTR (hello itmyhome , e) FROM dual;
--“1”為開始位置 “2”是搜索第二個匹配的,”0”是 return_option
-- 返回出現(xiàn)的第一個字符位置“c”是區(qū)分大小寫 ,所以將返回 13
SELECT REGEXP_INSTR (my is itMyhome , m , 1, 2, 0, c) FROM dual;
SELECT REGEXP_INSTR (World filled with love , with , 1, 1, 0, i) FROM dual;
-- 匹配多個備選
SELECT REGEXP_INSTR (Itmyhome , a|i|o|e|u) FROM dual;
regexp_replace
該函數(shù)和 replace 類似,用于替換符合正則表達(dá)式的字符串,Oracle 數(shù)據(jù)庫中的 REGEXP_REPLACE 函數(shù)的語法是
REGEXP_REPLACE(source_char, pattern [, replace_string
[, position [, occurrence [, match_parameter ] ] ] ])
- source_char 搜索值的字符表達(dá)式
- pattern 正則表達(dá)式
- replace_string 可選。匹配的模式將被替換 replace_string 字符串。 如果省略 replace_string 參數(shù),將刪除所有匹配的模式,并返回結(jié)果字符串。 - position 可選。在字符串中的開始位置搜索。如果省略,則默認(rèn)為 1。 - occurrence 它是模式字符串中的第 n 個匹配位置。如果省略,默認(rèn)為 1。 - match_parameter
i:大小寫不敏感; c:大小寫敏感; n:點號 . 不匹配換行符號; m:多行模式; x:擴展模式,忽略正則表達(dá)式中的空白字符。
如下是一些實例
-- 字符串替換
--luck is my network id
SELECT REGEXP_REPLACE (itmyhome is my network id , ^(\S*) , luck ) FROM dual;
-- 此示例將所指定的 \d 數(shù)字將以 #字符替換
--Result: #, #, and ## are numbers in this example
SELECT REGEXP_REPLACE (2, 5, and 10 are numbers in this example , \d , #) FROM dual;
以上是“Oracle 中正則表達(dá)式怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道!