MYSQL删除两个已知字符串之间的字符串

svmlkihl  于 2022-10-31  发布在  Mysql
关注(0)|答案(2)|浏览(284)

我有一个WordPress的网站,并根据主题的变化,我必须修改一千个链接的结构,目前约五十页。我想这样做的SQL通过PHPMYADMIN。
在SQL中有一种方法可以删除所有我的链接的结尾,具有如下结构:

- <a href="https://website.com/cours/les-problemes/lecon/s1-2014-2015-mathematiques-les-problemes/">
- <a href="https://website.com/cours/la-division/lecon/s3-2014-2015-mathematiques-la-division-n-nakatani/">
- <a href="https://website.com/cours/mathematiques-larithmetique/lecon/201819-s5-fa-mathematiques-nathalie-nakatani/">

只为了得到:

- <a href="https://website.com/cours/les-problemes/">
- <a href="https://website.com/cours/la-division/">
- <a href="https://website.com/cours/mathematiques-larithmetique/">

我试着用这个题目的答案:MYSQL Replace string between two known strings,但我没有设法找到一个解决方案,以符合我的目的。
我也想过分两部分来做:1-删除'/lecon/'和'"〉'之间的内容。2-然后完全删除我的页面中所有'/lecon/'的迭代,因为它们只出现在我想编辑的链接上。但是我在SQL方面的知识有限,我不知道如何做第一部分。
我为我的英语道歉。
谢谢你的帮助!

b4lqfgs4

b4lqfgs41#

在MySQL 8+上,我们可以尝试使用正则表达式替换:

SELECT
    tag,
    REGEXP_REPLACE(tag, '(<a href="https?://(?:[^/]+/){3}).*">', '$1">')
FROM yourTable;

Demo(第一个字母)

cygmwpex

cygmwpex2#

对于MySQL〈8(5.7),不带REGEXP_REPLACE

SELECT REPLACE(CONCAT(TRIM(TRAILING SUBSTRING_INDEX(url, '/lecon/', -1) FROM url), '">'), 'lecon/', '') FROM `your_table`

DEMO
根据您的想法,我在步骤1中删除了从/lecon/到末尾的所有内容,并连接了">以修复HTML URL,然后在步骤2中用空字符串替换了lecon/

相关问题