Вы можете использовать reverse
вместе с substring
и charindex
, чтобы получить то, что вы ищете:
select
reverse(substring(reverse(filename), 1,
charindex('.', reverse(filename))-1)) as FileExt
from
mytable
Это верно, даже если у вас есть несколько .
в вашем файле (например, hello.world.exe
вернет exe
).
Так что я немного поигрался с этим, и это еще один способ (только один вызов reverse
):
select
SUBSTRING(filename,
LEN(filename)-(CHARINDEX('.', reverse(filename))-2), 8000) as FileExt
from
mytable
Это вычисляет 10 000 000 строк за 25 секунд против 29 секунд для предыдущего метода.