Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Teilzeichenfolge in SQL Server abrufen

Sie können reverse verwenden zusammen mit substring und charindex um zu bekommen, wonach Sie suchen:

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

Dies gilt auch dann, wenn Sie mehrere . haben in Ihrer Datei (z. B. -hello.world.exe gibt exe zurück ).

Also habe ich ein bisschen damit herumgespielt, und das ist ein anderer Weg (nur ein Aufruf von reverse ):

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

Dies berechnet 10.000.000 Zeilen in 25 Sekunden gegenüber 29 Sekunden bei der vorherigen Methode.