Вы можете довольно легко добиться этого с помощью комбинации функций T-SQL CHARINDEX и SUBSTRING .
Это немного странно, но зависит только от присутствияиз двух подчеркиваний и точка.Например, %_%_%.%
Расширение может иметь любую длину, а также конечную подстроку:
РЕДАКТИРОВАТЬ: Обновлен для обработки переменных вхождения подчеркивания:
create function udfGetFileNameSubstring(@val as varchar(50))
returns varchar(50)
begin
--declare @val varchar(50)
--set @val = 'Attachments_21046_123400100473.pdf'
declare @uidx int
-- establish the index of the 2nd underscore
set @uidx = LEN(@val) - CHARINDEX('_', REVERSE(@val)) + 1
declare @pidx int
-- establish the index of the period
set @pidx = CHARINDEX('.', @val)
return SUBSTRING(@val, @uidx + 1, @pidx - @uidx - 1)
end
-- usage: SELECT dbo.udfGetFileNameSubstring(col_name) FROM table_name
-- sample: SELECT dbo.udfGetFileNameSubstring('Attachments_21046_123400100473.pdf')
-- OUTPUT: 123400100473
T-SQL, безусловно, может быть сокращен, и я бы обернул его в UDF для чистого использования в ваших запросах.