Вытянуть текст следующим и предшествовать двум разным разделителям строки переменной длины?

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

 Path ------------------------------------------------------ \1231254-0000001000-14671899.PDF \74-0000001001-14672073.PDF \65551-0000001001-14672929.PDF 

И мне нужно вернуть следующие символы: после второго тире и до периода.

 ID ------------------------------------------------------ 14671899 14672073 14672929 

Я знаю, что мне нужно использовать некоторые вариации LEN и т. Д., Но я с трудом понимаю, как лучше их использовать, учитывая, что длина пути может быть разной.

Любая помощь будет принята с благодарностью!

Вы можете использовать PARSENAME(REPLACE()) для этого:

  SELECT PARSENAME(REPLACE(path, '-', '.'), 2) FROM tableName 

PARSENAME() принимает строку и разбивает ее на символы периода . и возвращает токен, расположенный во второй позиции параметра.

Вы можете использовать substring и charindex если формат столбца согласован.

скрипка

 select reverse ( substring ( reverse(path), charindex('.',reverse(path))+1, charindex('-', reverse(path))- charindex('.',reverse(path))-1 ) ) from t 

Вы также можете попробовать использовать rtrim / ltrim (при условии, что он всегда такой же длины):

 select (ltrim(rtrim(path, 12),8).. 
Давайте будем гением компьютера.