tsql последнее вхождение внутри строки

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

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

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

а,б возвращает б

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

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


person Alberto De Caro    schedule 28.02.2012    source источник


Ответы (1)


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

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

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

person Alex K.    schedule 28.02.2012