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

如何在SQL Server中按多特殊字符拆分字符串至不同列?

按多特殊字符拆分字符串到多列的SQL解决方案

针对你提供的输入字符串ModelOutput_Prime_AtLevel(Revenue)/Spend_Prime_AtLevel(),可以通过嵌套使用CHARINDEX、SUBSTRING等函数,结合字符串分割逻辑提取目标列的值。以下是实现代码:

SELECT
    -- 提取col1:第一个下划线前的内容
    SUBSTRING(formula, 1, CHARINDEX('_', formula) - 1) AS col1,
    -- 提取col2:第一个和第二个下划线之间的内容
    SUBSTRING(
        formula,
        CHARINDEX('_', formula) + 1,
        CHARINDEX('_', formula, CHARINDEX('_', formula) + 1) - CHARINDEX('_', formula) - 1
    ) AS col2,
    -- 提取col3:括号中的Revenue
    SUBSTRING(
        formula,
        CHARINDEX('(', formula) + 1,
        CHARINDEX(')', formula) - CHARINDEX('(', formula) - 1
    ) AS col3,
    -- 提取col4:斜杠后第一个下划线前的内容
    SUBSTRING(
        formula,
        CHARINDEX('/', formula) + 1,
        CHARINDEX('_', formula, CHARINDEX('/', formula)) - CHARINDEX('/', formula) - 1
    ) AS col4,
    -- 提取col5:斜杠后第一个和第二个下划线之间的内容
    SUBSTRING(
        formula,
        CHARINDEX('_', formula, CHARINDEX('/', formula)) + 1,
        CHARINDEX('(', formula, CHARINDEX('_', formula, CHARINDEX('/', formula))) - CHARINDEX('_', formula, CHARINDEX('/', formula)) - 1
    ) AS col5
FROM tableb

逻辑说明:

  • col1:定位第一个下划线,截取之前的字符串。
  • col2:先找到第一个下划线的位置,再从该位置后找第二个下划线,截取两者之间的内容。
  • col3:通过定位左右括号的位置,截取中间的Revenue。
  • col4:先找到斜杠的位置,再从斜杠后找第一个下划线,截取两者之间的Spend。
  • col5:从斜杠后的第一个下划线位置开始,找下一个左括号,截取中间的AtLevel。

如果你的SQL Server版本是2016及以上,也可以结合STRING_SPLIT先拆分斜杠分隔的两部分再分别处理,但上述方法更直接适配固定格式的输入字符串。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 11:22:28