You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle REGEXP_REPLACE处理含特殊字符字符串的问题求助

Oracle正则替换问题解决方案

问题场景

需要将格式为_$deleted$73$0这类包含特殊字符的字符串替换为I01,执行以下SQL语句后结果不符合预期:

SQL> select REGEXP_REPLACE('_$deleted$73$0 RRR SSS','_\$deleted\$+?','I01') from dual ;

REGEXP_REPLACE('_$DE
--------------------
I0173$0 RRR SSS

实际输出为I0173$0 RRR SSS,但期望输出是I01 RRR SSS。

解决方法

调整正则表达式,匹配整个目标字符串(从_$deleted$开始到空格前的所有内容),修正后的SQL如下:

SELECT REGEXP_REPLACE('_$deleted$73$0 RRR SSS', '_\$deleted\$[^ ]+', 'I01') FROM dual;

执行后将得到预期结果:I01 RRR SSS。

原因说明

原正则表达式_\$deleted\$+?仅匹配了_$deleted$部分,未包含后面的73$0;调整后的_\$deleted\$[^ ]+中,[^ ]+会匹配_$deleted$之后直到空格为止的所有字符,确保整个目标串被完全替换。

内容的提问来源于stack exchange,提问作者user9599919

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 01:12:03