2017-05-22 9 views
0

に1つの知られている単語から部分文字列を抽出するために、私は2つの単語間の文字列を抽出しようとしていますどのように別の

ので、視覚的な例として:

フィールドの内容:The frog jumped over the fly in an amazing jump

ストップ名前の最初のトークン:frog
ストップ名二トークン:frog jumped over the fly in an amazing:私は抽出したい何amazing

私は、次のコードを試してみました:SUBSTRING([FIELD_CONTENT], CHARINDEX([STOP NAME FIRST TOKEN], [FIELD_CONTENT]) CHARINDEX([STOP NAME SECOND TOKEN],[FIELD_CONTENT]) - CHARINDEX([STOP NAME FIRST TOKEN], [FIELD_CONTENT]) + Len([STOP NAME SECOND TOKEN]))

= [私が欲しいもの]

、それが私にこのエラーを与える:

Msg 537, Level 16, State 2, Line 2
Invalid length parameter passed to the LEFT or SUBSTRING function.

私は私が間違っているの何見当がつかない。

アドバイスをいただければ幸いです。ありがとうございました!!

+0

あなたが本当に二 'CHARINDEX' –

+0

まだ同じエラー:( – pynewbee

+0

前にカンマが含まれていません。私はそれをコピーし、フィールド名のテキストを置き換え、それは私のために働いた。 –

答えて

0

第2のCHARINDEXの前にコンマがありません。

これを試してください。 文字列で更新されました。

Select SUBSTRING('The frog jumped over the fly in an amazing jump', CHARINDEX('frog', 'The frog jumped over the fly in an amazing jump') 
, CHARINDEX('amazing','The frog jumped over the fly in an amazing jump') - CHARINDEX('frog', 'The frog jumped over the fly in an amazing jump') + Len('amazing')) 

結果:

frog jumped over the fly in an amazing

0

Rather than making 5 function calls, you can do it in just 3 by nesting two SUBSTRING_INDEX() 's inside of CONCAT() :

SELECT CONCAT('frog', 
     SUBSTRING_INDEX(
      SUBSTRING_INDEX('The frog jumped over the fly in an amazing jump','frog',-1), 
     'amazing',1) 
     ,'amazing') AS 'What I Want' 

最初SUBSTRING_INDEX()が生成:jumped over the fly in an amazing jump
SUBSTRING_INDEX()が生成する:最後jumped over the fly in an
CONCAT()キーワードを再アタッチ:frog jumped over the fly in an amazing

関連する問題