2012-09-25 69 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