Puoi usare reverse insieme a substring e charindex per ottenere ciò che stai cercando:
select
reverse(substring(reverse(filename), 1,
charindex('.', reverse(filename))-1)) as FileExt
from
mytable
Questo regge, anche se hai più . nel tuo file (ad es.-hello.world.exe restituirà exe ).
Quindi stavo giocando un po' con questo, e questo è un altro modo (solo una chiamata per reverse ):
select
SUBSTRING(filename,
LEN(filename)-(CHARINDEX('.', reverse(filename))-2), 8000) as FileExt
from
mytable
Questo calcola 10.000.000 di righe in 25 secondi contro i 29 secondi del metodo precedente.