2017-05-19 12 views
3

작업 쿼리를 작성 중입니다. 공백으로 구분 된 정지 이름의 SECOND WORD를 가져 오려고합니다.LEFT 또는 SUBSTRING 함수에 잘못된 길이 매개 변수가 전달되었습니다. ERROR 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. 

을 내가 도대체 ​​뭘 잘못하고있는 겁니까?

업데이트 :

두 번째 단어 만 가져 오려고합니다. 정류장 이름이 "Caroline Jane Doe"인 경우 "Jane"을 당기려고합니다.

THanks!

답변

1

왜 이렇게 가겠습니까? 문자열의 LEN을 가지고 공간의 CHARINDEX의 시작 위치를 차감하고, 문자열의 시작 위치에 그 연결 :

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

이 제안에 대한 감사합니다! 이 방법은 "Jane Doe"와 같은 두 단어 만 있으면 분명히 작동합니다. 그러나 "Caroline Jane Doe"와 같은 단어가 여러 개 있고 두 번째 단어 인 "Jane"을 가져 오려면 전체 "jane doe"를 끌어 오므로 작동하지 않습니다. – pynewbee

+0

정확합니다. 첫 번째 공백 문자 다음에 오는 데이터 만 반환합니다. –

1

는 표현식의 길이 (3) 매개 변수가이 평가되기 때문에 음수 값. 단어에 공백이 2 개 이상있는 경우 표현식이 작동합니다 (예 : 'abc def ghi'). 단 하나의 공백 ('abc def')이있는 경우 표현식의 일부가 0으로 평가됩니다. (세 번째 매개 변수) 음수와 오류가 있습니다.

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

+0

내가 뭘 잘못하고 있는지에 대한 설명에 감사드립니다 !! – pynewbee

+0

답변이 도움이된다면 upvote를 잊지 마시기 바랍니다 .. 감사합니다. – RKRC