Oracle Regexp_Replace

abstractcyj發表於2016-07-21
 SELECT regexp_replace('13,453,5', '([0-9]{2,3})', '''\1''') FROM dual;


SQL> SELECT regexp_replace('13,453,5', '([0-9]{2,3})', '''\1''') FROM dual;


REGEXP_REPLA
------------
'13','453',5


這裡的\1表示向後引用匹配
要講數字替換成前後均有單引號,正規表示式應該兩側都有括號, 否則,\1會被認為是普通字串。



後向引用 
正規表示式的一個有用的特性是能夠儲存子表示式供以後重用;這也被稱為後向引用(在表 10 中對其進行了概述)。它允許複雜的替換功能,如在新的位置上交換模式或顯示重複出現的單詞或字母。子表示式的匹配部分儲存在臨時緩衝區中。緩衝區從左至右進行編號,並利用 \digit 符號進行訪問,其中 digit 是 1 到 9 之間的一個數字,它匹配第 digit 個子表示式,子表示式用一組圓括號來顯示。 
接下來的例子顯示了通過按編號引用各個子表示式將姓名 Ellen Hildi Smith 轉變為 Smith, Ellen Hildi。 
SELECT REGEXP_REPLACE(
'Ellen Hildi Smith',
'(.*) (.*) (.*)', '\3, \1 \2')
FROM dual
REGEXP_REPLACE('EL
------------------
Smith, Ellen Hildi 


參考:https://oracle-base.com/articles/misc/regular-expressions-support-in-oracle
https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions130.htm
http://blog.itpub.net/30218320/viewspace-1724251/

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8520577/viewspace-2122367/,如需轉載,請註明出處,否則將追究法律責任。

相關文章