tsql последнее "появление" внутри строки - PullRequest
14 голосов
/ 28 февраля 2012

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

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 Ответ

26 голосов
/ 28 февраля 2012

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

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

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

...