原文在這 戳正則表達式
REGEXP_SUBSTR測試
5個參數.net
第一個是輸入的字符串blog
第二個是正則表達式字符串
第三個是標識從第幾個字符開始正則表達式匹配。(默認爲1)get
第四個是標識第幾個匹配組。(默認爲1)it
第五個是是取值範圍:class
i:大小寫不敏感;test
c:大小寫敏感;擴展
n:點號 . 不匹配換行符號;
m:多行模式;
x:擴展模式,忽略正則表達式中的空白字符。
所有測試數據
SQL> select * from test_reg_substr;
A
-----------------------------------
ABC123XYZ
ABC123XYZ456
<Name>Edward</Name>
檢索中間的數字
SQL> SELECT
2 REGEXP_SUBSTR(a,'[0-9]+')
3 FROM
4 test_reg_substr
5 WHERE
6 REGEXP_LIKE(a, '[0-9]+');
REGEXP_SUBSTR(A,'[0-9]+')
---------------------------------
123
123
檢索中間的數字(從第一個字母開始匹配,找第2個匹配項目)
SQL> SELECT
2 NVL(REGEXP_SUBSTR(a,'[0-9]+',1, 2), '-') AS a
3 FROM
4 test_reg_substr
5 WHERE
6 REGEXP_LIKE(a, '[0-9]+');
A
------------------------------------------------------
-
456
取得「字符集合」
SQL> SELECT
2 REGEXP_SUBSTR(a, '\w+')
3 FROM
4 test_reg_substr
5 WHERE
6 REGEXP_LIKE(a, '\w+');
REGEXP_SUBSTR(A,'\W+')
-------------------------------
ABC123XYZ
ABC123XYZ456
Name
取得「字符集合」(從第一個字母開始匹配,找第2個匹配項目)
SQL> SELECT
2 NVL(REGEXP_SUBSTR(a, '\w+',1, 2), '-') AS a
3 FROM
4 test_reg_substr
5 WHERE
6 REGEXP_LIKE(a, '\w+');
A
---------------------------------------------------
-
-
Edward