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