SQL语句替换URL的最后部分

时间:2019-07-05 12:42:32

标签: mysql sql replace phpmyadmin mariadb

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都是不同的。

2 个答案:

答案 0 :(得分:4)

如果运行的是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%'

答案 1 :(得分:1)

您可以这样做:

update t
    set url = concat(substring_index(url, '=', 1), '.html')
    where url like '%-%'
相关问题