Если вы на самом деле не знаете глубину пути и все имена файлов, которые вы ищете, заканчиваются на '.txt', то следующее должно получить то, что вы хотите.
with parm(stg) as (select '\\spfs1\stone\foo.txt'::text)
select stg, substring(stg from '.*\\(.*)\.txt$') from parm;
Что делает шаблон:
- . * Найдите любое количество символов
- \\, за которым следует символ \
- (. *), Затем любое количество символов, и запишите эти символы
- \. Txt с последующим .txt
- $ конец строки Возвращает захваченные символы. Примечание: если имя файла было "foo.bar.txt", это вернуло бы "foo.bar".