2012-09-25 65 views
2

這是我需要完成的一個時髦匹配。Oracle SQL Regexp_replace匹配

A5.1.9.11.2

需求,成爲:

A05.01.09.11.02

DOT部分的金額從沒有改變很多。字母「A」將永遠在那裏,總是有1個字符。

我想使用regexp_replace()函數來使用它作爲排序機制。謝謝。

回答

3

的Oracle SQL不支持環視斷言,這將對於這種情況下是有用的:

s/([0-9](?<![0-9]))/0\1/g 

你必須使用至少兩種替代品:

REGEXP_REPLACE(REGEXP_REPLACE(col, '([0-9]+)', '0\1'), '0([0-9]{2})', '\1') 
+0

+1我擱淺關於環視問題。使用兩個REGEXP_REPLACE()調用並不直觀,但它確實有效。 – APC