Du kan använda reverse
tillsammans med substring
och charindex
för att få det du letar efter:
select
reverse(substring(reverse(filename), 1,
charindex('.', reverse(filename))-1)) as FileExt
from
mytable
Detta håller, även om du har flera .
i din fil (t.ex.-hello.world.exe
returnerar exe
).
Så jag lekte lite med det här, och det här är ett annat sätt (bara ett anrop för att reverse
):
select
SUBSTRING(filename,
LEN(filename)-(CHARINDEX('.', reverse(filename))-2), 8000) as FileExt
from
mytable
Detta beräknar 10 000 000 rader på 25 sekunder mot 29 sekunder för den tidigare metoden.