首页 > 解决方案 > 用于替换 URL 的最后部分的 SQL 语句

问题描述

videos表中替换为URL具有许多不同 URL 类型的列。我使用 MariaDB 10.3

https://google.com/questions/ask?963
https://google.com/embed/57=66.88.028.10/i/03/077fsdf
https://google.com/top57=66.88.028.10/i/03/077
https://video.net/emb.html?asdeen45dr57=66.88.028.10/i/03/07776/asdeen45dr57
https://video.net/fomdfk5f7s1f.html
https://video.net/emb.html?qsfeen4gttv1=54.47.158.810/i/11/00036/qsfeen4gttv1

我需要删除特定 URL 的一部分(全部删除=)并替换为 .html

https://video.net/emb.html?asdeen45dr57=66.88.028.10/i/03/07776/asdeen45dr57

https://video.net/emb.html?asdeen45dr57.html

在这种情况下,将替换

=66.88.028.10/i/03/07776/asdeen45dr57

.html

请注意,=符号后的 URL 部分对于每个 URL 都不同。

标签: mysqlsqlreplacephpmyadminmariadb

解决方案


如果您正在运行 MySql 8.0 或更高版本,您可以使用regexp_replace

UPDATE videos
SET url = REGEXP_REPLACE(url, '=.*$', '.html')
WHERE url LIKE 'https://video.net%'

如果没有正则表达式,这将起作用(也适用于 MySql 5.*)

UPDATE videos 
SET url = CONCAT(SUBSTR(url, 1, INSTR(url, '=') - 1), '.html')
WHERE url LIKE 'https://video.net%'

推荐阅读