2012-02-28 5 views
14

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

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

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

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

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

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

ответ

26

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

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

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

Смежные вопросы