Bootstrap

UPDATE 语句结合 REPLACE() 函数来批量修改 detail 字段中的 xxx 为 xxx

  • 问题出现的背景,由于阿里云的oss服务器域名更换,所以我们需要修改数据库中detail字段中的域名,才能加载图片

您可以使用 SQL 的 UPDATE 语句结合 REPLACE() 函数来批量修改 detail 字段中的 oss.kxlist.comwww.crossbiog.com。 以下是 SQL 语句:

UPDATE `product`
SET `detail` = REPLACE(`detail`, 'oss.kxlist.com', 'www.crossbiog.com')
WHERE INSTR(`detail`, 'oss.kxlist.com') > 0;

语句解释:

  • UPDATE product``: 这条语句指定我们要更新 product 表。 请确保 product 是您的实际表名。
  • SET detail = REPLACE(detail, 'oss.kxlist.com', 'www.crossbiog.com'): 这部分是 UPDATE 语句的核心,它指定了要如何更新 detail 列的值。
    • REPLACE(detail, 'oss.kxlist.com', 'www.crossbiog.com'): REPLACE() 函数的作用是在字符串中替换子字符串。
      • 第一个参数 detail 是要进行替换操作的列名,这里是 product 表的 detail 列。
      • 第二个参数 'oss.kxlist.com' 是要被替换的旧子字符串。
      • 第三个参数 'www.crossbiog.com' 是要替换成的新子字符串。
      • REPLACE() 函数会遍历 detail 列中的每个值,并将其中所有出现的 'oss.kxlist.com' 替换为 'www.crossbiog.com'。 替换后的新字符串将成为 detail 列的新值。
  • WHERE INSTR(detail, 'oss.kxlist.com') > 0: WHERE 子句用于筛选需要更新的记录,确保只更新 detail 字段中包含 oss.kxlist.com 的记录,避免不必要的更新操作。
    • INSTR(detail, 'oss.kxlist.com') > 0: 这个条件与我们之前查询数量和查询记录的语句中的 WHERE 子句相同,用于判断 detail 字段是否包含 'oss.kxlist.com'。 只有当 detail 字段包含 'oss.kxlist.com' 时,才会执行 SET 操作进行替换。

操作步骤和注意事项:

  1. 备份数据库! 在执行任何 UPDATE 语句之前,请务必备份您的 product 表! 或者至少备份包含 detail 列的数据。 这是非常重要的,以便在出现意外情况时可以回滚数据。

  2. 在测试环境执行 (强烈建议): 如果您有测试数据库或 staging 环境,请先在测试环境中执行这条 UPDATE 语句,验证替换结果是否符合预期,确保没有错误发生。

  3. 执行 UPDATE 语句: 使用 MySQL 客户端工具连接到您的数据库,将上述 UPDATE 语句粘贴到查询窗口中并执行。

  4. 验证更新结果: 执行完成后,您可以再次运行之前的查询语句来验证替换是否成功,并检查一些更新后的记录,确认 detail 字段中的 oss.kxlist.com 已经被替换为 www.crossbiog.com。 例如,您可以执行以下查询来查看更新后的记录:

    SELECT *
    FROM `product`
    WHERE INSTR(`detail`, 'www.crossbiog.com') > 0;
    

    或者再次运行之前的统计数量查询,确认 detail 字段包含 oss.kxlist.com 的产品数量是否变为 0 (或者显著减少,取决于您的数据情况)。

重要提示:

  • 替换是全局的: REPLACE() 函数会替换 detail 字段中所有出现的 'oss.kxlist.com'。 如果您的 detail 字段中除了图片 URL 之外,还有其他地方也可能包含 'oss.kxlist.com',请务必仔细检查替换结果,确保替换操作不会影响到其他不需要修改的部分。 在大多数情况下,对于 HTML 内容中的图片 URL 替换,这种全局替换通常是安全的。
  • 操作不可逆 (除非有备份): UPDATE 操作会直接修改数据库中的数据。 一旦执行,除非您有备份,否则无法轻易撤销更改。 因此,备份和测试环境验证 非常重要。

请务必谨慎操作,并先在测试环境中验证,确认一切正常后再在生产环境执行。

在这里插入图片描述

;