Sie können reverse verwenden zusammen mit substring und charindex um zu bekommen, wonach Sie suchen:
select
reverse(substring(reverse(filename), 1,
charindex('.', reverse(filename))-1)) as FileExt
from
mytable
Dies gilt auch dann, wenn Sie mehrere . haben in Ihrer Datei (z. B. -hello.world.exe gibt exe zurück ).
Also habe ich ein bisschen damit herumgespielt, und das ist ein anderer Weg (nur ein Aufruf von reverse ):
select
SUBSTRING(filename,
LEN(filename)-(CHARINDEX('.', reverse(filename))-2), 8000) as FileExt
from
mytable
Dies berechnet 10.000.000 Zeilen in 25 Sekunden gegenüber 29 Sekunden bei der vorherigen Methode.