如何在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
相关产品推荐
相关产品推荐

