【问题标题】:Complex MySQL Find Replace复杂的 MySQL 查找替换
【发布时间】:2023-03-18 08:22:01
【问题描述】:

我需要通过mysql查找和替换链接:“https://www.scribd.com/doc/uniquenumber/nameofthedocument”的所有实例到“https://www.hrnerr.org/doc/?doc=uniquenumber”?

我知道 mysql 不使用通配符,所以也许有更好的方法。有 169 个 scribd(旧)位置实例需要替换为新位置。

UPDATE wp_whaz19_posts SET `post_content`
= REPLACE (`post_content`,
"https://www.scribd.com/doc/257828321/Piermont-Marsh-Fact-Finding-Meeting-    3-Summary-010715",
"https://www.newlink.org/doc/?doc=257828321"); 

或者换句话说;

UPDATE wp_whaz19_posts SET `post_content`
= REPLACE (`post_content`,
"https://www.scribd.com/doc/*",
"https://www.newlink.org/doc/?doc=*");

【问题讨论】:

  • 即使它确实使用了不起作用的通配符,因为你会得到 https://www.newlink.org/doc/?doc=257828321/Piermont-Marsh-Fact-Finding-Meeting- 3-Summary-010715 而不是 https://www.newlink.org/doc/?doc=257828321 看起来你需要编写一个脚本。

标签: php mysql wordpress


【解决方案1】:

如果您的旧 URL 和新 URL 已按上述方式进行修复,这是否可以为您完成工作: UPDATE wp_whaz19_posts SET post_content=REPLACE(LEFT(post_content, LOCATE('/', post_content, 28)-1), 'https://www.scribd.com/doc/', 'https://www.newlink.org/doc/?doc=')

【讨论】:

  • 不会导致newlink.org/doc/?doc=257828321/… 如上所述 dstudeba 吗?
  • /..... 被 REPLACE 内的 LEFT 调用修剪掉,其中搜索第一个 / 后的数字 - LOCATE 确实需要知道从哪里开始(字符 28 ) - 如果原始 URL 是可变长度的,这将是一个问题 - 但如果它像我评论的那样被修复,它将起作用
  • 在制作mysql的test copy的过程中遇到了一些错误。成功后会发布。
  • UPDATE wp_whaz19_posts SET post_content=REPLACE(LEFT(post_content, LOCATE('/', post_content, 28)-1), 'https://www.scribd.com/doc/', 'https://www.hrnerr.org/doc/?doc=') 可能有点偏离,因为它会大幅截断“post_content”,例如<p style="text-align: center;font-size: 20px"><em>What do we know about the water quality in the vicinity of Piermont Marsh?<。还有一个:'<h1>Where can I find more information about...< 好像结尾
  • html 标签会不会对 LOCATE 造成一些混乱?
猜你喜欢
  • 1970-01-01
  • 2021-05-26
  • 2021-04-07
  • 2016-01-04
  • 2014-09-20
  • 2016-12-10
  • 2013-06-25
  • 1970-01-01
相关资源
最近更新 更多