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

SQL Server函数组合异常:提取URL报告ID时结果缺失如何修复?

修复URL提取ReportID的SQL语句问题

你的问题出在计算截取长度时用了原始URL,而不是处理后(去掉/redacted)的URL。

原语句中,REPLACE(al.uri, '/redacted', '')已经把带后缀的URL改成了正确格式,但CHARINDEX('/', REVERSE(al.uri),1)-1还是基于未处理的原始URL反转来计算截取长度——比如https://sub.chem.ratio.example/report/20073997621/redacted反转后第一个/的位置是9(对应原URL末尾的/redacted部分),但替换后的URL长度比原URL短了9个字符,用这个长度去RIGHT截取,就会多截掉ID前面的部分,导致结果缺失。

修复方案1:嵌套函数,统一基于处理后的URL计算

直接把替换后的URL作为REVERSE的参数,确保截取长度和目标字符串匹配:

RIGHT(REPLACE(al.uri, '/redacted', ''), CHARINDEX('/', REVERSE(REPLACE(al.uri, '/redacted', ''))) - 1) AS ReportID

修复方案2:用CROSS APPLY简化代码(推荐)

如果不想重复写REPLACE,可以先通过CROSS APPLY生成处理后的URL,再基于它计算截取长度,代码可读性更高:

SELECT 
    RIGHT(processed.processed_uri, CHARINDEX('/', REVERSE(processed.processed_uri)) - 1) AS ReportID
FROM 
    your_table al
CROSS APPLY (
    SELECT REPLACE(al.uri, '/redacted', '') AS processed_uri
) processed

这两个方案都能同时处理两种URL格式:不管原URL有没有/redacted后缀,都能正确提取最后一个/后的ReportID。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 10:32:17