日期:2014-05-16  浏览次数:20877 次

正则函数问题
有一个IP地址, '61.134.1.4',需要转换为 '061.134.001.004',我用oracle的正则替换函数regexp_replace,

  SELECT REGEXP_REPLACE('61.134.1.4',
                        '([[:digit:]]+)',
                        SUBSTR('000' || '\1', -3))
    FROM DUAL

得到的结果为什么是 '061.0134.01.04'?

------解决方案--------------------
引用:
Quote: 引用:

有一个IP地址, '61.134.1.4',需要转换为 '061.134.001.004',我用oracle的正则替换函数regexp_replace,

  SELECT REGEXP_REPLACE('61.134.1.4',
                        '([[:digit:]]+)',
                        SUBSTR('000' 
------解决方案--------------------
 '\1', -3))
    FROM DUAL

得到的结果为什么是 '061.0134.01.04'?

推荐你使用下面表达式
select regexp_replace('0012.0019.00168.0027' ,'([^.]*)([^.]{3})','\2')
from dual;

对不起,复制错sql了。。
select regexp_replace(
regexp_replace('61.134.1.4','([^.]+)','00\1') ,'([^.]*)([^.]{3})','\2')
from dual