Możesz użyć reverse
wraz z substring
i charindex
aby uzyskać to, czego szukasz:
select
reverse(substring(reverse(filename), 1,
charindex('.', reverse(filename))-1)) as FileExt
from
mytable
To się trzyma, nawet jeśli masz wiele .
w twoim pliku (np.-hello.world.exe
zwróci exe
).
Więc bawiłem się trochę z tym, a to jest inny sposób (tylko jedno wywołanie reverse
):
select
SUBSTRING(filename,
LEN(filename)-(CHARINDEX('.', reverse(filename))-2), 8000) as FileExt
from
mytable
Oblicza to 10 000 000 wierszy w 25 sekund w porównaniu z 29 sekundami dla poprzedniej metody.