请教一下各位, 在oracle中如何比如这样的数据如何用正则将第7段的值替换掉,就是第6-7个.中间的数据替换掉就是我如下图片中红色位置的数据。替换掉一个固定值比如99999,(所有数据总共10段。按.号分隔的。只把第7段的数据替换掉)
SELECT regexp_replace(STR, '[^\.]+', '999999',INSTR(STR,'.',1,6),1) RES FROM ( SELECT '6006.0.0.2202010501.0.0.6006160003.W005564.0.0' STR FROM DUAL)
用instr找到出现的位置就行了,instr第四个参数是选择第几次出现,然后拼接下。
with t as (select '1,2,3,4,5,6,7,8,9,10' as a from dual )
select a,instr(a,',',1,6),instr(a,',',1,7),SUBSTR(a,1,instr(a,',',1,6))||'99999'||substr(a,instr(a,',',1,7),100) from t