如何使用查询删除数据库中某些单词后的文本?

时间:2016-12-31 17:27:41

标签: mysql sql database mysqli phpmyadmin

我的情况就像在我的数据库中我有像

这样的链接
http://www.myurl.com/url-blog/entry/camel-shadows-pic-amazing-.htmlhttps://www.testurl.com/gatoradecoupons

http://www.myurl.com/url-blog/entry/cat-mountain-at-ukraine.htmlhttps://www.testurl.com/user/212294

我想删除.html之后的文字。我想删除htmlhttps之外的文本。我们可以检查网址是否包含此内容并修剪除.html

之外的其他文本

所需的输出

http://www.myurl.com/url-blog/entry/camel-shadows-pic-amazing-.html

http://www.myurl.com/url-blog/entry/cat-mountain-at-ukraine.html

数据库中有数千个这样的URL。我想知道是否有任何方法可以一次性删除。 请帮忙

1 个答案:

答案 0 :(得分:3)

执行此操作的一种方法是使用substring_index()

select concat(substring_index(url, '.html', 1), '.html')

如果某些值没有.html,那么上面的内容会添加它。为此,您可以使用case

select (case when url like '%.html%'
             then concat(substring_index(url, '.html', 1), '.html')
             else url
        end)

并且,一旦您使用select进行测试,您可以根据需要更新值:

update t
    set url = concat(substring_index(url, '.html', 1), '.html')
    where url like '%.html%';