2011-11-30 2 views
0

그래서 폴더 경로를 묶는 테이블에서 하위 문자열을 찾으려고합니다. "C : \ Root \ IWantThisString \ otherstuff"사이에있는 하위 문자열을 가져 오려고합니다. SUBSTRING(FilePath,9,CHARINDEX('\',FilePath,9) - 9)과 같은 문제는 "C : \ Root \ IWantThisString"과 같은 경로가있을 때 charindex가 "루트"다음에 마지막 '\'을 찾지 못하기 때문에 오류를 반환한다는 것입니다 (이 경우 세 번째 '\'없음).SQL 하위 문자열 사용 charindex - somelength 또는 문자열 길이 - somelength

이렇게 쉬운 방법이 있습니까?

SELECT SUBSTRING(FilePath,9,(
    IF (CHARINDEX('\',FilePath,9) = 0) 
    BEGIN 
     LEN(FilePath) 
    ELSE 
     CHARINDEX('\',FilePath,9) - 9 
    END)) 
FROM Table 

그런가요?

답변

2

하! 엄청나게 간단한 답을 찾았습니다. 각 문자열의 끝에 백 슬래시를 추가 할 수 있습니다. 그것은 완벽하게 작동합니다!

SELECT SUBSTRING(FilePath,9,(CHARINDEX('\',FilePath + '\',9) - 9))