2012-02-28 2 views
14

쉼표로 구분 된 값이 들어있는 필드가 있습니다. 목록의 마지막 요소를 추출해야합니다. 나는이 함께 시도 :tsql 문자열 내에서 마지막 "발생"

select list_field, LTRIM(RTRIM(right(list_field, len(list_field) - CHARINDEX(',',list_field)))) 

그러나 그것은 단지 첫 번째 쉼표 발생 후 시작하는 목록의 마지막 부분을 반환합니다.

B 예를 들어 ,

A, B, 반환 A, B는 C 나 패턴과 같은 정규 표현식을 사용하고자하는

c를, B를 반환합니다. TSQL (SQL Server 2008)에서 가능합니까? 다른 단서가 있습니까?

답변

26

문자열을 반대로하고 첫 번째 항목을 찾고 ,을 찾은 다음 문자열의 오른쪽에서 많은 문자를 읽습니다.

rtrim(right(list_field, charindex(',', reverse(list_field)) - 1)) 

(현장 &에서 분리 문자는 단일 값을 할 가능성이있는 경우 reverse(list_field) + ','를 사용)