SQL语句:删除字符串的一部分

23

可能是重复问题:
在SQL UPDATE中使用str_replace?
如何在mysql中删除字符串的一部分?
SQL查找和替换字符串的一部分

我有一个数据库表格,其中包含网站URL列表,例如http://website.com/,我想从它们中删除所有的http://https://。是否有一个简单的SQL语句可以在列上运行以删除它?

我已经搜索了一下,但是找不到我需要的内容。我认为我需要同时使用REPLACE和UPDATE,但我很困难。

到目前为止,我有:

UPDATE list
SET    website
WHERE  website LIKE 'http://%';

这样正确吗?我正在使用MySQL,表名为list,列名为website,我想要删除http://,使得像这样的url:http://website.com/ 变成 website.com

编辑:同时也可以删除末尾的斜杠吗?


1
可能的重复问题: https://dev59.com/sWs05IYBdhLWcg3wDtpn http://stackoverflow.com/questions/9068229/sql-deleting-replacing-a-part-of-a-string http://stackoverflow.com/questions/10153852/sql-find-replace-part-of-a-string - Jocelyn
使用 str_replace 函数结合 update 查询。 - Shehzad Bilal
3个回答

45

看一下REPLACE函数。你需要使用它两次来同时删除http和https。

UPDATE    list
SET       website = REPLACE(REPLACE(website, 'https://', ''), 'http://', '')
WHERE     website like 'https://%' 
  OR      website like 'http://%'

为了处理尾部斜线,你可以使用RIGHTLEFTLENGTH函数。

UPDATE    list
SET       website = LEFT(website, LENGTH(website) - 1)
WHERE     RIGHT(website, 1) = '/'

这里有一些您可能会发现有用的文档: MySQL字符串函数


使用这种方法是否可以删除尾部斜杠? - Cameron

15

如果存在该字符串,为什么不直接替换它:

UPDATE list
SET    website = Replace(website, 'http://', '')

6
update TABLE_NAME set FIELD_NAME = replace(FIELD_NAME, ‘find this string’, ‘replace found string with this string’) where CONDITION

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,