Puedes usar reverse
junto con substring
y charindex
para conseguir lo que buscas:
select
reverse(substring(reverse(filename), 1,
charindex('.', reverse(filename))-1)) as FileExt
from
mytable
Esto se mantiene, incluso si tiene varios .
en su archivo (p. ej.-hello.world.exe
devolverá exe
).
Así que estaba jugando un poco con esto, y esta es otra forma (solo una llamada a reverse
):
select
SUBSTRING(filename,
LEN(filename)-(CHARINDEX('.', reverse(filename))-2), 8000) as FileExt
from
mytable
Esto calcula 10 000 000 de filas en 25 segundos frente a los 29 segundos del método anterior.