首页/数据/SQL 速查/REPLACE 字符串替换
本包目录(311 条)
查询基础33 条连接与子查询40 条聚合与窗口函数54 条
函数速查60 条
变更与事务52 条性能与执行计划72 条

REPLACE 字符串替换

把出现的所有子串替换为新内容:字面量替换、区分大小写、不支持正则;批量脱敏、清理固定后缀时高频使用。

SQL 速查数据更新于 2026-10-12

示例

示例
UPDATE users
SET phone = REPLACE(phone, ' ', '')
WHERE phone LIKE '% %';

SELECT REPLACE('2024-01-02', '-', '');   -- '20240102'
匹配方式逐字面匹配,替换全部出现位置(不是只替一个)
大小写区分大小写(MySQL / PostgreSQL 均如此)
正则替换用 REGEXP_REPLACE(MySQL 8 / PostgreSQL)
REPLACE 为 NULL 的规则:任一参数为 NULL,结果为 NULL;对可空列批量替换前先过滤或 COALESCE。

易错点

  • 想替换“首次出现”却用了 REPLACE:它替换全部出现位置,需要按位置控制时改用正则或应用层处理
  • 对索引列做 UPDATE ... REPLACE(col,...) 会使该行索引更新,大表批量操作要分批提交

数据来源与参考

  • MySQL 8.0 Reference Manual · REPLACE
  • PostgreSQL Documentation · String Functions and Operators
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌