2017-05-10 20 views
0

まで、私は'\'(バックスラッシュ)までのすべてのテキストを抽出するために探しています。SQL Selectステートメント文字

サブストリングがすべて進ん文字(計17)を除去する必要があるので、私はそれがバックスラッシュに遭遇するまで、17日後にすべてを返すようにしたいと思います。

私はCHARINDEXを使用してみましたが、それはその後の文字を返します\で停止していないようです。

SELECT path, substring(path,17, CHARINDEX('\',Path)+ LEN(Path)) As Data 
    FROM [Table].[dbo].[Projects] 
    WHERE Path like '\ENQ%\' AND 
    Deleted = '0' 

以下のスクリーンショットは、基本的なクエリを示していて、私は、最初のX文字が意志として削除する部分文字列を使用し Image 1

文字列全体、すなわち、その結果、次のように私のコードです連続する文字の数は常に同じです。

enter image description here しかしImは実際の後である(上記の結果に基づいて)「試験1」「試験2」及び「テストABC」セクション

+0

を使用することができます私たちのすべてのケースのためのいくつかの入力データを表示し、各ケースの出力を期待。 –

+0

申し訳ありませんが理解できません - 私はテーブルに入力していません。 insertを使用してサンプルデータを挿入し、そのデータをクエリすることを意味しますか? – Shabbaranks

答えて

1

ストリングは全て進行文字(合計17)を除去する必要があるとだから私はバックスラッシュに来るまで17日後にすべてを返すしたいと思います。

select 
substring(path,17,CHARINDEX('\',Path)-17) 
from 
table 

Invalid length parameter passed to the LEFT or SUBSTRING functionエラーを克服するために、あなたはCASE

select 
    substring(path,17, 
    CASE when CHARINDEX('\',Path,17)>0 
     Then CHARINDEX('\',Path)-17) 
     else VA end 
      ) 
    from 
    table 
+0

あなたの例を使用していただきありがとうございます。無効な長さパラメータがLEFTまたはSUBSTRING関数に渡されます。 – Shabbaranks

+0

はそれは持っていない可能性があり、いくつかのフィールド、かもしれない負values.thereを得るため、長さフィールドであることができる '\'、我々は17を引くときに、値を使用すると、サンプルデータを追加negative.canなり – TheGameiswar

+0

@Shabbaranks:更新された答えを参照してください – TheGameiswar

関連する問題