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

如何在SQL Server列中删除最后一个'/'及之后的所有内容

SQL Server 移除URL最后一个'/'及之后内容的解决方案

需求:处理SQL Server中nvarchar(1000)类型的full_url列,将类似http://www.example.com/folder/subfolder/somemorefolder/document.txt的URL,删除最后一个/及其之后的所有内容,得到http://www.example.com/folder/subfolder/somemorefolder。

你提到的MySQL方案无法直接在SQL Server中使用,自己尝试的语句也存在参数错误问题。这里提供两种可行的SQL写法:

方法一:使用LEFT函数(推荐)

SELECT 
    LEFT(full_url, LEN(full_url) - CHARINDEX('/', REVERSE(full_url))) AS trimmed_url
FROM myTable

方法二:使用SUBSTRING函数

如果习惯用SUBSTRING,需要调整参数位置(SUBSTRING的第二个参数是起始索引,第三个是截取长度):

SELECT 
    SUBSTRING(full_url, 1, LEN(full_url) - CHARINDEX('/', REVERSE(full_url))) AS trimmed_url
FROM myTable

逻辑说明

  1. REVERSE(full_url):将原URL反转,让原本最后一个/变成字符串开头第一个出现的/
  2. CHARINDEX('/', REVERSE(full_url)):获取反转后第一个/的位置,这个数值等于原URL中最后一个/到末尾的字符数(包括/本身)
  3. LEN(full_url) - 上述数值:计算出需要保留的字符串长度(从开头到最后一个/的前一位)
  4. 通过LEFT或SUBSTRING截取对应长度的字符串,得到目标结果

特殊情况处理(可选)

如果存在URL末尾本身就是/的情况(比如http://example.com/folder/),上述语句会删除这个末尾的/。如果需要保留末尾/,可以添加判断逻辑:

SELECT 
    CASE 
        WHEN RIGHT(full_url, 1) = '/' THEN full_url
        ELSE LEFT(full_url, LEN(full_url) - CHARINDEX('/', REVERSE(full_url)))
    END AS trimmed_url
FROM myTable

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 04:55:15