2017-05-19 51 views
3

私は仕事のためのクエリを作成しています。私はスペースで区切られた停止名のSECOND WORDを引いてみようとしています。LEFTまたはSUBSTRING関数に長さパラメータが渡されました。エラーmsg

停止名が「Jane Doe」の場合、「Doe」をプルします。

私はSQLで定義しようとしている分野を持っており、それは次のようになります。

[pull the second word] = SUBSTRING([STOP_NAME], (CHARINDEX(' ', [STOP_NAME], 1)) + 1, (CHARINDEX(' ', [STOP_NAME], CHARINDEX(' ', [STOP_NAME], 1) + 1)) - (CHARINDEX(' ', [STOP_NAME], 1)) - 1) 

私はこれを入力すると、私は次のようなエラーメッセージが出ます:

Invalid length parameter passed to the LEFT or SUBSTRING function. 

を私は間違って何をしていますか?

更新日:

私は2番目の単語のみを取得しようとしています。ストップの名前が "Caroline Jane Doe"だったら、ただ "Jane"を引っ張りたい。

THanks!

答えて

1

なぜこのようなものに行かないのですか? 、文字列のLENを取るスペースのCHARINDEXの開始位置を減算し、SUBSTRINGのスタート位置にそのプラグ:

[pull the second word] = 
SUBSTRING([STOP_NAME],(CHARINDEX(' ',[STOP_NAME], 1)) + 1, LEN([STOP_NAME]) - CHARINDEX(' ',[STOP_NAME], 1)) 
+0

は、提案をありがとう!私が "Jane Doe"のような2つの単語しか持っていない場合、このメソッドは間違いなく機能します。しかし、「Caroline Jane Doe」などの言葉が複数あり、「Jane」という2番目の単語を引っ張りたい場合は、「jane doe」全体を引っ張ってしまい、機能しません。 – pynewbee

+0

あなたは正しいです、それは最初のスペース文字の後のデータだけを返します。 –

1

あなたの表現の長さ(第三)のパラメータがに評価するためです負の値。 単語に2つ以上のスペースがある場合は式が機能します(例 'abc def ghi')。スペースが1つしかない場合(abc def)、式の下の部分が0と評価されます。 (3番目のパラメータ)が負になりエラーが発生します。

CHARINDEX( ' ' [STOP_NAME]、CHARINDEX(''、[STOP_NAME]、1)+ 1))

+0

私が間違っていることの説明に感謝します! – pynewbee

+0

答えが助けられたら、upvoteを忘れないでください。ありがとう – RKRC

関連する問題