返回顶部
分享到

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

Mysql 来源:互联网 作者:佚名 发布时间:2025-11-23 09:18:54 人浏览
摘要

MySQL 的REPLACE有两个不同的用途,分别是: REPLACE()函数:用于字符串替换。 REPLACE INTO语句:用于插入或替换整行记录(类似INSERT INTO ... ON DUPLICATE KEY UPDATE)。 ? 一、REPLACE()函数 ???? 语法: 1

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(...)

?? 注意事项

  • REPLACE INTO 实际上是“删除+插入”,如果有自增主键,会导致 ID 变化。
  • REPLACE() 函数区分大小写(默认情况下)。
  • 在使用 REPLACE INTO 时要确保有合适的主键或唯一索引,否则等同于普通插入。

如需更细粒度控制(例如只更新某些字段),建议使用 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;

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


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
相关文章
  • MySQL的REPLACE 函数用途与语句介绍

    MySQL的REPLACE 函数用途与语句介绍
    MySQL 的REPLACE有两个不同的用途,分别是: REPLACE()函数:用于字符串替换。 REPLACE INTO语句:用于插入或替换整行记录(类似INSERT INTO ... ON
  • Mysql表的内联和外联区别
    表的连接分为内连和外连 内连接 内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,我们前面文章的查询都是内连接,也是
  • MySQL CTE (Common Table Expressions)的介绍
    CTE (Common Table Expression,公共表表达式) 是 MySQL 8.0 引入的重要特性,它允许在查询中创建临时命名结果集,提高复杂查询的可读性和可维护性
  • SQL Server中的WITH(NOLOCK)介绍
    SQL Server 中的 WITH (NOLOCK) 详解 一、WITH (NOLOCK) 的本质 WITH (NOLOCK) 是 SQL Server 中的表提示(Table Hint),等同于 READUNCOMMITTED 隔离级别,它指示 SQ
  • MySQL强制使用特定索引的操作
    在MySQL中,你可以通过多种方式强制查询使用特定的索引,这在优化查询性能时非常有用,特别是当查询优化器没有选择最佳索引时。 1. 使
  • Navicat数据表的数据添加,删除及使用sql完成数据的

    Navicat数据表的数据添加,删除及使用sql完成数据的
    Navicat数据表数据添加,删除及使用sql完成数据添加 选中操作的表 右击----打开表(或者直接双击也行) 则出现如下界面,查看左下角 从左到右
  • 从入门到精通MySQL数据库索引(实战案例)
    一、索引是什么?能干嘛? 类比理解:索引就像书的目录。比如你想查《哈利波特》中 伏地魔 出现的页数,不用逐页翻书,直接看目录找
  • MySQL中DISTINCT去重的核心注意事项
    DISTINCT 六大注意事项 1. 作用范围:所有 SELECT 字段 1 SELECT DISTINCT a, b FROM table; -- 对(a,b)组合整体去重 误以为只作用于第一个字段: 1 2 -- 错误
  • MySQL中日期相减的完整指南(最新推荐)
    MySQL 中日期相减的完整指南 在 MySQL 中,日期相减有几种不同的方法,具体取决于你想要得到的结果类型(天数差、时间差等)。 1. 使用
  • MySQL中的LIMIT语句及基本用法
    MySQL 中的 LIMIT 语句 LIMIT语句用于限制查询返回的行数,常用于分页查询或取部分数据,提高查询效率。 1. LIMIT 语法 1 2 3 4 5 SELECT 列名1, 列名
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计