Tsql последнее "появление" внутри строки

У меня есть поле, содержащее значения, разделенные запятыми. Мне нужно извлечь последний элемент в списке. Я пробовал с этим:

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

Но он возвращает последнюю часть списка, начиная с первой запятой. Например,

a, b возвращает b

a, b, c возвращает b, c

Я хотел бы использовать шаблон с регулярным выражением. Возможно ли это в TSQL (sql server 2008)? Любые другие подсказки?

Ответы

Ответ 1

Найдите последний ,, изменив строку и найдя первое вхождение, затем прочитайте, что много символов справа от строки;

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

(Используйте reverse(list_field) + ',', если есть возможность не создавать разделители в поле, и вам нужно одиночное значение)