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

SQL Server技术问询:如何提取下划线第二次出现后的字段值

获取SQL Server中字符串第二个下划线之后的内容

你的问题核心是要定位到第二个下划线的位置,然后从它的下一个字符开始截取字符串。你之前用的语句只找到了第一个下划线的位置,所以得到的结果不符合预期。

解决方案

我们可以嵌套使用CHARINDEX函数来定位第二个下划线的位置,再结合SUBSTRING完成截取:

SELECT 
    SUBSTRING(
        name, 
        CHARINDEX('_', name, CHARINDEX('_', name) + 1) + 1, 
        LEN(name)
    ) AS Name
FROM product_details;

代码解释

  • CHARINDEX('_', name):找到字符串中第一个下划线的位置
  • CHARINDEX('_', name, CHARINDEX('_', name) + 1):从第一个下划线的下一个字符开始查找,得到第二个下划线的位置
  • SUBSTRING(..., 第二个下划线位置 + 1, LEN(name)):从第二个下划线的下一个字符开始,截取到字符串末尾

测试结果

用你的测试数据执行上面的语句,会得到完全符合期望的输出:

Name
pen
pen_two
ted_ted_pen
te_de_rd_te

处理边界情况(可选)

如果你的表中存在下划线数量少于2个的字符串,上面的语句会返回NULL。如果想要这种情况返回原字符串,可以用CASE语句处理:

SELECT 
    CASE 
        WHEN LEN(name) - LEN(REPLACE(name, '_', '')) >= 2 THEN
            SUBSTRING(
                name, 
                CHARINDEX('_', name, CHARINDEX('_', name) + 1) + 1, 
                LEN(name)
            )
        ELSE name
    END AS Name
FROM product_details;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:17:17