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

如何在SQL中结合SUBSTRING与右侧截断提取指定字符段

提取下划线间目标数据的SQL实现

针对需要从MyFld字段中提取第一个下划线后、第二个下划线前的内容(无第二个下划线时取第一个下划线后的全部内容)的需求,以下是可行的SQL解决方案:

方法一:结合SUBSTRING与CASE判断

SELECT 
    MyFld,
    SUBSTRING(
        MyFld,
        CHARINDEX('_', MyFld) + 1,
        CASE
            -- 无第二个下划线时,取第一个下划线后的全部长度
            WHEN CHARINDEX('_', MyFld, CHARINDEX('_', MyFld) + 1) = 0 
                THEN LEN(MyFld) - CHARINDEX('_', MyFld)
            -- 有第二个下划线时,取两个下划线之间的长度
            ELSE CHARINDEX('_', MyFld, CHARINDEX('_', MyFld) + 1) - CHARINDEX('_', MyFld) - 1
        END
    ) AS ExtractedValue
FROM YourTable;

方法二:嵌套LEFT与SUBSTRING简化逻辑

SELECT 
    MyFld,
    LEFT(
        SUBSTRING(MyFld, CHARINDEX('_', MyFld) + 1, LEN(MyFld)),
        -- 给截取后的内容追加下划线,确保找不到时返回全部长度
        CHARINDEX('_', SUBSTRING(MyFld, CHARINDEX('_', MyFld) + 1, LEN(MyFld)) + '_') - 1
    ) AS ExtractedValue
FROM YourTable;

逻辑说明

  1. 第一步通过CHARINDEX('_', MyFld)定位第一个下划线的位置,用SUBSTRING截取该位置之后的所有内容;
  2. 第二步判断截取后的内容中是否存在下划线:
    • 不存在则直接返回全部截取内容;
    • 存在则截取到该下划线之前的部分,得到目标数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 02:45:23