Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Obtenir une sous-chaîne dans SQL Server

Vous pouvez utiliser reverse avec substring et charindex pour obtenir ce que vous cherchez :

select
    reverse(substring(reverse(filename), 1, 
        charindex('.', reverse(filename))-1)) as FileExt
from
    mytable

Cela tient, même si vous avez plusieurs . dans votre fichier (par exemple-hello.world.exe renverra exe ).

Donc je jouais un peu avec ça, et c'est une autre façon (un seul appel à reverse ):

select 
    SUBSTRING(filename, 
        LEN(filename)-(CHARINDEX('.', reverse(filename))-2), 8000) as FileExt
from
    mytable

Cela calcule 10 000 000 lignes en 25 secondes contre 29 secondes pour l'ancienne méthode.