Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Obter substring no SQL Server


Você pode usar reverse junto com substring e charindex para obter o que procura:
select
    reverse(substring(reverse(filename), 1, 
        charindex('.', reverse(filename))-1)) as FileExt
from
    mytable

Isso é válido, mesmo se você tiver vários . em seu arquivo (por exemplo-hello.world.exe retornará exe ).

Então eu estava brincando um pouco com isso, e essa é outra maneira (apenas uma chamada para reverse ):
select 
    SUBSTRING(filename, 
        LEN(filename)-(CHARINDEX('.', reverse(filename))-2), 8000) as FileExt
from
    mytable

Isso calcula 10.000.000 de linhas em 25 segundos versus 29 segundos para o método anterior.