Oracle SQL regexp-替换两个数字之间的点
我需要改变这个Oracle SQL regexp-替换两个数字之间的点,oracle,regexp-replace,Oracle,Regexp Replace,我需要改变这个 J S49-1:7.5-190 d. 对此, J S49-1:7,5-190 d. 将所有点替换为逗号,但仅在数字之间。使用REGEXP\u SUBSTR的一种方法: select REGEXP_SUBSTR('J S49-1:7.5-190 d','[^.]+',1,1)||','||REGEXP_SUBSTR('J S49-1:7.5-190 d','[^.]+',1,2) from dual; 这是regexp\u回复 select REGEXP_REPLACE('J
J S49-1:7.5-190 d.
对此,
J S49-1:7,5-190 d.
将所有点替换为逗号,但仅在数字之间。使用REGEXP\u SUBSTR的一种方法:
select REGEXP_SUBSTR('J S49-1:7.5-190 d','[^.]+',1,1)||','||REGEXP_SUBSTR('J S49-1:7.5-190 d','[^.]+',1,2) from dual;
这是regexp\u回复
select REGEXP_REPLACE('J S49-1:7.5-190 d','[.*]',',') from dual
使用
REGEXP_REPLACE
中的捕获组
将返回
J S49-1:7,5-190 d.
J S49-1:7,557,8-190 d.
但是,如果数字之间有多次出现句点,这将不起作用
如果数字之间出现多个周期
我能够用捕获组触发多重替换
将返回
J S49-1:7,5-190 d.
J S49-1:7,557,8-190 d.
最后两个参数为:<代码>开始位置和n\u外观
,要替换所有出现的情况,n\u外观
值必须为0
但当两个捕获组共享一个数字时仍然存在一个问题,这是由于重叠(),需要提前解决,但不能在oracle中使用它,嗯
如果两个数字之间出现多个周期,并且两个周期之间共享同一个数字
一个解决方案是应用我共享过两次的第二个REGEXP\u REPLACE
,这样任何重叠的情况都会在第二次运行中被覆盖
将是正确的结果
J S49-1:7,5,8,7-190 d.
有关REGEXP\u REPLACE
的更多详细信息,请检查
J S49-1:7,5,8,7-190 d.