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) + ',' если в поле есть возможность без разделителей и вам нужно одно значение)

Другие вопросы по тегам