string
  • sql-server-2008
  • charindex
  • 2016-11-03 6 views 0 likes 
    0

    "Email_Transport_Cabforce_NEB_Fallback_LB"から "Cabforce"を取得するSQLスクリプトの作成方法?CHARINDEXとSUBSTRINGを使用して2番目と3番目の "_"の間に特定のテキストを抽出する方法は?

    最初の_と最後の_の間にすべての単語を取得するには解決策が見つかりましたが、2番目の_と3番目の_の間の文字列を取得するために変換できませんでした。

    DECLARE @c varchar(100) 
    SET  @c = 'Email_Transport_Cabforce_NEB_Fallback_LB' 
    
    SELECT SUBSTRING(
        @c, 
        CHARINDEX('_', @c) + 1, 
        LEN(@c) - CHARINDEX('_', @c) - CHARINDEX('_', REVERSE(@c)) 
    ) 
    
    +0

    質問はより具体的です。 –

    答えて

    0

    これは、あなたがそれを構築する方法を示しています。私は粉々にそれを分解しました。ロジックを見て、すべてを1つの式に戻すことができます。

    DECLARE @c varchar(100) SET @c = 'Email_Transport_Cabforce_NEB_Fallback_LB' 
    
    DECLARE @firstIndex int = CHARINDEX('_', @c) + 1 
    DECLARE @secondIndex int = CHARINDEX('_', @c, @firstIndex) + 1 
    DECLARE @thirdIndex int = CHARINDEX('_', @c, @secondIndex) + 1 
    
    SELECT SUBSTRING(@c, @secondIndex, @thirdIndex - @secondIndex - 1) 
    
    +0

    **太字**多くの感謝! –

    +0

    文字列に_がまったく含まれていない場合、1つの単語だけがクラッシュします... –

    1

    これは少し長めですが、このようにすることができます。最初のアンダースコアの場所を見つけ、それを次の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 
    
    +0

    _italic_Many Thanx!_italic_ –

    +0

    ようこそ。あなたの問題を解決した答えがあれば、それを受け入れられた答えとしてマークしてください。 –

    +0

    URL文字列に1つの単語しか含まれていないため、両方のソリューションでいくつかの問題が発生しました。アンダースコアはありません。 –

    関連する問題