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.