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

SQL Server如何按规则查找替换从url列提取无后缀文件名

解决方法

核心逻辑是先定位到fileName=的起始位置截取其后的内容,再移除文件后缀即可,以下是可用的SQL写法:

1. 查询转换(不修改原表数据)

如果所有文件后缀均为.mp3,可以用以下简单写法:

SELECT 
  REPLACE(SUBSTRING(url, CHARINDEX('fileName=', url) + 8, LEN(url)), '.mp3', '') AS url
FROM 你的表名;

如果需要兼容不同后缀、避免文件名中包含.mp3导致转换错误,推荐用更稳妥的写法:

SELECT 
  SUBSTRING(
    file_segment,
    1,
    LEN(file_segment) - CHARINDEX('.', REVERSE(file_segment))
  ) AS url
FROM (
  -- 先截取出fileName=之后的完整文件名(带后缀)
  SELECT SUBSTRING(url, CHARINDEX('fileName=', url) + 8, LEN(url)) AS file_segment
  FROM 你的表名
  -- 过滤掉不符合格式的记录避免报错
  WHERE CHARINDEX('fileName=', url) > 0
) AS temp

2. 直接更新原表字段

如果需要直接修改原表的url字段,使用以下UPDATE语句:

UPDATE 你的表名
SET url = SUBSTRING(
    SUBSTRING(url, CHARINDEX('fileName=', url) + 8, LEN(url)),
    1,
    LEN(SUBSTRING(url, CHARINDEX('fileName=', url) + 8, LEN(url))) - CHARINDEX('.', REVERSE(SUBSTRING(url, CHARINDEX('fileName=', url) + 8, LEN(url))))
)
WHERE CHARINDEX('fileName=', url) > 0

注意事项

  • 执行更新前建议先执行查询语句确认转换结果符合预期,避免数据错误
  • 若部分记录不存在fileName=标识或无文件后缀,会被WHERE条件过滤不会参与转换

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 22:06:02