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