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

如何使用SQL SUBSTRING函数从文件名中准确提取目标字符串

问题说明
  • 需求:使用SUBSTRING函数从下划线分隔的文件名中提取指定字段
  • 测试文件名:73186_RHIMagnesita_PHI_StopLoss_TruncSSN_NonRedact_Inc_to_Apr2022_Paid_to_Apr2022_EDIT
  • 目标提取值:RHIMagnesita
  • 原有写法:
SUBSTRING(DFH.FileName, CHARINDEX('_', DFH.FileName) + 1, CHARINDEX('_PHI', DFH.FileName) - 1)  
  • 原有写法返回结果:RHIMagnesita_PHI_S,不符合预期
错误原因

SQL Server中SUBSTRING函数的第三个参数是需要截取的字符长度,不是截取的结束位置。原有写法的第三个参数计算的是「字符串开头到_PHI前一位的总长度」,没有扣除第一个下划线之前的字符长度,导致截取范围超出目标字段边界。

修正方案

调整第三个参数的计算逻辑,用_PHI的起始位置减去第一个下划线的位置,再减1,得到两个分隔符之间的准确字符长度:

SUBSTRING(
    DFH.FileName,
    CHARINDEX('_', DFH.FileName) + 1,
    CHARINDEX('_PHI', DFH.FileName) - CHARINDEX('_', DFH.FileName) - 1
)

用测试文件名验证计算逻辑:

  • 第一个_的位置是6,截取起始位为7
  • _PHI的起始位置是18
  • 截取长度为18 - 6 - 1 = 11,和RHIMagnesita的字符长度完全匹配,可准确返回目标值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 10:21:39