这有点冗长,但你可以这样做。它找到第一个下划线的位置,然后将其用作下一次CHARINDEX
计算的开始。然后它对第三个再次执行此操作CHARINDEX
。最后两次计算的结果用作SUBSTRING
.
DECLARE @c VARCHAR(100); SET @c = 'Email_Transport_Cabforce_NEB_Fallback_LB'
SELECT
@C Variable
,SUBSTRING(@c,CHARINDEX('_',@c,CHARINDEX('_',@c)+1)+1,(CHARINDEX('_',@c,CHARINDEX('_',@c,CHARINDEX('_',@c)+1)+1)-CHARINDEX('_',@c,CHARINDEX('_',@c)+1))-1) Result
输出
Variable Result
Email_Transport_Cabforce_NEB_Fallback_LB Cabforce
如果您的输出不能包含下划线,那么使用这个;
DECLARE @c VARCHAR(100); SET @c = 'Email'
IF NOT EXISTS (SELECT 1 WHERE CHARINDEX('_',@c) < 2)
BEGIN
SELECT
@C Variable
,SUBSTRING(@c,CHARINDEX('_',@c,CHARINDEX('_',@c)+1)+1,(CHARINDEX('_',@c,CHARINDEX('_',@c,CHARINDEX('_',@c)+1)+1)-CHARINDEX('_',@c,CHARINDEX('_',@c)+1))-1) Result
END
ELSE
SELECT @c Result
输出
Result
Email