You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL如何截断URL前缀仅保留末尾名称?

正确截断URL前缀的SQL语句方案

我来帮你搞定这个URL截断的问题~先拆解下你之前两个语句的问题:

  • 第一个语句 UPDATE tableSETurl WHERE LEFT (url, 37) = 'http://example.com/path1/path2/path3/':核心问题是SET url``后面没有指定要赋值的内容,这会导致所有匹配条件的url被置为默认值(比如NULL),完全不符合只保留末尾名称的需求。
  • 第二个语句 UPDATE table SET LEFT(url, 37) = '' WHERE LEFT(url, 37) = 'http://example.com/path1/path2/path3/':属于SQL语法错误,SET后面的格式必须是列名=表达式,不能把函数作为左侧的赋值对象,数据库无法识别这种写法。

两种可行的正确解决方案

方案一:固定长度前缀截取(适合前缀长度确定的场景)

你已经确认目标前缀http://example.com/path1/path2/path3/的长度是37个字符,直接从第38位开始截取字符串即可:

UPDATE `table` 
SET `url` = SUBSTRING(`url`, 38) 
WHERE LEFT(`url`, 37) = 'http://example.com/path1/path2/path3/'

方案二:REPLACE替换前缀(更灵活的通用方案)

如果担心前缀长度有变动,或者想更直观地替换指定前缀,可以用REPLACE函数,同时用LIKE过滤确保只修改符合条件的URL:

UPDATE `table` 
SET `url` = REPLACE(`url`, 'http://example.com/path1/path2/path3/', '') 
WHERE `url` LIKE 'http://example.com/path1/path2/path3/%'

关键操作提醒

执行UPDATE操作前,一定要先通过SELECT语句验证结果是否正确,避免误改数据:

-- 测试方案一的结果
SELECT SUBSTRING(`url`, 38) AS truncated_url 
FROM `table` 
WHERE LEFT(`url`, 37) = 'http://example.com/path1/path2/path3/'

-- 测试方案二的结果
SELECT REPLACE(`url`, 'http://example.com/path1/path2/path3/', '') AS truncated_url 
FROM `table` 
WHERE `url` LIKE 'http://example.com/path1/path2/path3/%'

确认输出的truncated_url是你想要的name1、name2等结果后,再执行UPDATE操作。

内容的提问来源于stack exchange,提问作者Muhammad Faisal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 18:57:58