Mysql
主页 > 数据库 > Mysql >

MySQL的REPLACE 函数用途与语句介绍

2025-11-23 | 佚名 | 点击:

MySQL 的 REPLACE 有两个不同的用途,分别是:

  1. REPLACE() 函数:用于字符串替换。
  2. REPLACE INTO 语句:用于插入或替换整行记录(类似 INSERT INTO ... ON DUPLICATE KEY UPDATE)。

? 一、REPLACE()函数

???? 语法:

1

REPLACE(str, from_str, to_str)

???? 参数说明:

参数 类型 描述
str 字符串 原始字符串
from_str 字符串 要被替换的子字符串
to_str 字符串 替换后的新子字符串

???? 功能说明:

将字符串 str 中所有的 from_str 子字符串替换成 to_str,并返回新的字符串。如果 str 中不包含 from_str,则返回原始字符串。

???? 示例:

1

2

SELECT REPLACE('http://8.130.70.131/image.jpg', '8.130.70.131', 'zhongyuele.top');

-- 返回: http://zhongyuele.top/image.jpg

? 二、REPLACE INTO语句

???? 语法:

1

2

REPLACE INTO table_name [(column1, column2, ...)]

VALUES (value1, value2, ...);

???? 参数说明:

参数 类型 描述
table_name 表名 要操作的数据表
(column1, column2, ...) 列名列表 可选,指定插入列
(value1, value2, ...) 值列表 对应列的值

???? 功能说明:

???? 示例:

1

REPLACE INTO users (id, name) VALUES (1, 'Alice');

如果 users 表中已有 id = 1 的记录,则该记录会被删除并插入新记录。

???? 总结对比表格

特性 REPLACE(str, from_str, to_str) REPLACE INTO
类型 字符串函数 SQL 语句
使用场景 替换字符串中的部分内容 插入或替换整条记录
是否影响原数据 不修改原数据,仅返回新字符串 实际执行写操作(删除 + 插入)
是否需要唯一索引 是(依赖主键或唯一约束)
返回值 替换后的字符串 影响的行数(1 或 2)
示例 SELECT REPLACE(name, 'a', 'A') REPLACE INTO table VALUES(...)

?? 注意事项

如需更细粒度控制(例如只更新某些字段),建议使用 INSERT INTO ... ON DUPLICATE KEY UPDATE。

案例

以下是实现批量替换 [goods](file://D:\workspace\me\rbac2024\read\后台系统\shop-api\itmk-base-web\src\main\java\com\itmk\web\sys_banner\entity\SysBanner.java#L23-L24) 表中 [image](file://D:\workspace\me\rbac2024\read\后台系统\shop-api\itmk-base-web\src\main\java\com\itmk\web\goods\entity\Goods.java#L47-L47) 列包含 8.130.70.131 字符串为 zhongyuele.top 的 SQL 语句,并对语法中的关键字进行详细说明,最后以表格形式总结。

? 执行 SQL 语句

1

2

3

UPDATE goods

SET image = REPLACE(image, '8.130.70.131', 'zhongyuele.top')

WHERE image LIKE '%8.130.70.131%';

???? 关键字说明

关键字/函数 说明
UPDATE 用于修改表中的数据。指定要更新的表名(这里是 [goods](file://D:\workspace\me\rbac2024\read\后台系统\shop-api\itmk-base-web\src\main\java\com\itmk\web\sys_banner\entity\SysBanner.java#L23-L24))。
SET 指定要更新的列和新的值。这里将 [image](file://D:\workspace\me\rbac2024\read\后台系统\shop-api\itmk-base-web\src\main\java\com\itmk\web\goods\entity\Goods.java#L47-L47) 列设置为 REPLACE(...) 的结果。
REPLACE(str, from_str, to_str) MySQL 内置字符串函数,用于将 str 中的所有 from_str 替换为 to_str。
WHERE 可选,但建议加上,用于限定只更新包含 8.130.70.131 的记录,避免全表更新影响性能。
LIKE 用于模式匹配,这里的 % 是通配符,表示任意字符序列。'%8.130.70.131%' 表示包含该字符串的所有记录。

???? 总结表格

SQL 元素 示例 含义
UPDATE UPDATE goods 更新 [goods](file://D:\workspace\me\rbac2024\read\后台系统\shop-api\itmk-base-web\src\main\java\com\itmk\web\sys_banner\entity\SysBanner.java#L23-L24) 表的数据
SET SET image = ... 设置 [image](file://D:\workspace\me\rbac2024\read\后台系统\shop-api\itmk-base-web\src\main\java\com\itmk\web\goods\entity\Goods.java#L47-L47) 列的新值
REPLACE() REPLACE(image, '8.130.70.131', 'zhongyuele.top') 替换 [image](file://D:\workspace\me\rbac2024\read\后台系统\shop-api\itmk-base-web\src\main\java\com\itmk\web\goods\entity\Goods.java#L47-L47) 列中的旧字符串为新字符串
WHERE WHERE image LIKE '%8.130.70.131%' 仅更新包含目标字符串的行
LIKE '%' 通配符,匹配任意字符组合

?? 注意事项

例如分页更新:

1

2

3

4

UPDATE goods

SET image = REPLACE(image, '8.130.70.131', 'zhongyuele.top')

WHERE image LIKE '%8.130.70.131%'

LIMIT 1000;

可多次执行直到所有记录处理完毕。

原文链接:
相关文章
最新更新