2014-03-28 2 views
0
SUBSTRING(LEFT(shortnote, CHARINDEX('Additional Comments:', shortnote)), 
CHARINDEX('Patient Instructions:', shortnote) + LEN('Patient Instructions:'),LEN(shortnote)) 

모든 결과에서 '추가 의견'에 약간의 공백이있는 문자 A가 나타납니다. .
어떻게 여분의 편지를 없앨 수 있습니까? 나는 단지 여분의 편지를 없애고 싶은 어떤 공간도 신경 쓰지 않는다. 환자의 지시 사항과 추가 의견 사이의 값입니다 고마워요내 하위 문자열이 작동하지만 끝 단어의 끝에 여분의 문자가 있습니다.

+0

몇 개의 예제 문자열과 원하는 부분 문자열을 표시 할 수 있습니까? –

답변

1

charindex() - 1을 거쳐야합니다.

charindex()은 검색어가 시작되는 색인을 반환하므로이를 제거하려면 1 문자 왼쪽으로 이동해야합니다.

+0

나는 ivalid 길이 매개 변수를 가져 오는 것이 중요합니다. 행 중 하나에 하위 문자열에서 사용중인 테스트가 없을 수 있습니다. – user3115719

+0

'charindex()'가 0을 반환하는지 검사하는 case 문에서이를 감쌀 것입니다. 그런 다음 문자열을 포함하지 않는 값이 있으면 찾고있는 문자열을 처리 할 수 ​​있습니다. – Tony

+0

'charindex ('Additional Comments :', shortnote)'가 0을 반환하면 존재하지 않으므로'substring'의 세 번째 param에 대해 필드의 크기보다 큰 정수를 사용해야합니다. 다른 charindex가 0을 반환 할 수있는 경우 case 문을 중첩해야 할 수도 있습니다. – Tony

2
SUBSTRING(
    LEFT(shortnote, CHARINDEX('Additional Comments:', shortnote)-1), 
    CHARINDEX('Patient Instructions:', shortnote) + LEN('Patient Instructions:') , LEN(shortnote)) 
+0

-1을 추가 할 때 길이 매개 변수가 잘못되었습니다. – user3115719

관련 문제