Oracle 字符串替换 replace 函数详解与示例

在 Oracle 数据库开发中,字符串替换是高频操作,尤其在数据清洗、报表生成等场景,而 replace 函数常‌用于把字符串中的某个子串全部替换成新内容。

语法

REPLACE(源字符串, 要查找的子串, [替换成什么])

参数说明:

参数
说明
是否必填
源字符串
被处理的字段或字面量
✅ 必填
要查找的子串
要被替换掉的固定字符串(区分大小写)
✅ 必填
替换成什么
替换后的内容,不写则默认为空字符串 ''​
❌ 可选

注意:REPLACE 不支持通配符、不支持正则,只能匹配"一模一样的固定子串"。

执行逻辑

1、从源字符串中从左到右扫描,把所有出现的"要查找的子串"全部替换掉
2、不是只替换第一个,是全部替换
3、如果找不到目标子串,原样返回,不会报错

示例

1、替换固定字符

select replace('2026年08月14日', '年', '') from dual;
-- 结果:202608月14日

2、嵌套使用

select replace(replace(replace('2026年08月14日','年',''),'月',''),'日','') from dual;
-- 结果:20260814

3、省略第三个参数 = 删除

select replace('Hello World', 'l') from dual;
-- 结果:Heo Word

4、替换成别的字符

select replace('2026-08-14', '-', '/') from dual;
-- 结果:2026/08/14

5、找不到目标,原样返回

SELECT REPLACE('20260814', '年', '') FROM dual;
-- 结果:20260814(不报错)

典型使用场景

1、去掉固定分隔符(- / 年 月 日 T 等)
2、批量把某个固定字符改成另一个(如把 'N/A' 改成 NULL)
3、数据清洗中格式高度统一的场景

注意事项

❌ 不能用通配符(%、* 都不认)
❌ 不能匹配"一类字符"(比如"所有非数字")
❌ 大小写敏感:REPLACE('AbC','abc','x') → AbC(不动)

© 版权声明
THE END
如果觉得这篇文章对您有帮助,可以收藏本网址,方便下次访问!
点赞16 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容