2012-02-28 15 views
14

Mam pole zawierające wartości rozdzielone przecinkami. Muszę wyodrębnić ostatni element z listy. Próbowałem z tym:tsql ostatnie "wystąpienie" wewnątrz ciągu znaków

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

ale zwraca ostatnią część listy właśnie rozpoczynającego się po dniu pierwszego wystąpienia przecinkami. Przykładowo

A, B wraca b

A, B, C powraca b, c

ja ma być używany jak wyrażenia regularnego wzorca. Czy jest to możliwe w TSQL (serwer sql 2008)? Jakieś inne wskazówki?

Odpowiedz

26

Znajdź ostatnie ,, odwracając ciąg i szukając pierwszego wystąpienia, a następnie odczytaj tyle znaków z prawej strony ciągu;

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

(Użyj reverse(list_field) + ',' jeśli istnieje możliwość bez ograniczników w dziedzinie & chcesz pojedynczej wartości)