これは少し長めですが、このようにすることができます。最初のアンダースコアの場所を見つけ、それを次のCHARINDEX
計算の開始点として使用します。それは3番目のCHARINDEX
のためにこれを再度行います。最後の2つの計算の結果は、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
質問はより具体的です。 –