Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Ottieni una sottostringa in SQL Server

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.