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

SQL Server 2008中如何截取字符串第一个下划线后的内容

解决SQL Server 2008中动态截取第一个下划线后内容的问题

嘿,这问题太常见了!你之前用固定截取前3个字符的方式,只能适配前缀长度一致的情况,现在要搞定不同长度的前缀,核心就是动态定位第一个下划线的位置,而不是硬编码长度。

正确的SQL语句

SELECT SUBSTRING(DocID, CHARINDEX('_', DocID), LEN(DocID)) AS NewDocID
FROM YourTableName; -- 记得替换成你的实际表名

语句拆解解释

  • CHARINDEX('_', DocID):这个函数会返回字符串里第一个下划线_的位置索引。比如FOO_1_23_456里第一个下划线在第4位,FOO1_1_23_4567里则在第5位,完全自动适配不同前缀。
  • SUBSTRING(DocID, 起始位置, 长度):从指定的起始位置开始截取字符串,这里第三个参数用LEN(DocID)是因为我们要一直截取到字符串结尾,不管剩下的内容有多长。

测试验证

  • 输入FOO_1_23_456 → 输出_1_23_456
  • 输入FOO1_1_23_4567 → 输出_1_23_4567

额外优化(处理无下划线的异常情况)

如果你的数据里存在没有下划线的DocID,可以加个CASE语句避免返回空值:

SELECT 
    CASE 
        WHEN CHARINDEX('_', DocID) > 0 THEN SUBSTRING(DocID, CHARINDEX('_', DocID), LEN(DocID))
        ELSE DocID -- 没有下划线时返回原字符串,也可以改成你需要的默认值
    END AS NewDocID
FROM YourTableName;

这样不管前缀是3个字符还是4个字符,都能准确拿到第一个下划线之后的所有内容啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:33:53